在Nginx中为多个域名配置SSL证书,通常使用SNI(Server Name Indication)技术,这允许在同一IP地址和端口上为多个域名提供SSL服务。以下是详细的步骤指南:
首先,为每个域名获取SSL证书。你可以从以下途径获取:
确保你的服务器上已经安装了Nginx。如果尚未安装,可以参考以下命令进行安装(以Ubuntu为例):
sudo apt update
sudo apt install nginx
为每个域名创建一个独立的服务器块配置文件。假设你有两个域名:example.com
和 www.example.com
。
sudo nano /etc/nginx/sites-available/example.com
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# SSL配置优化
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'HIGH:!aNULL:!MD5';
ssl_prefer_server_ciphers on;
root /var/www/example.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
创建符号链接将配置文件链接到sites-enabled
目录:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
在重新加载Nginx之前,测试配置文件是否有语法错误:
sudo nginx -t
如果输出显示配置文件没有问题,继续下一步。
应用新的配置:
sudo systemctl reload nginx
确保防火墙允许HTTP(80)和HTTPS(443)流量。例如,使用ufw
:
sudo ufw allow 'Nginx Full'
如果你有多个域名,为每个域名重复上述步骤,创建各自的服务器块配置文件,并确保每个配置文件中的server_name
正确指向对应的域名。
Certbot 是一个方便的工具,可以自动获取、安装和续订Let's Encrypt证书。
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
Certbot会自动修改Nginx配置文件,添加SSL相关配置,并启用HTTPS重定向。
Let's Encrypt证书有效期为90天,Certbot可以设置定时任务自动续订:
sudo crontab -e
添加以下行,每天检查并续订证书:
0 0 * * * /usr/bin/certbot renew --quiet
确保所有域名都能通过HTTPS访问,并且浏览器显示安全连接。你可以使用SSL Labs的SSL测试来检查SSL配置的安全性和性能。
领取专属 10元无门槛券
手把手带您无忧上云