首页
学习
活动
专区
圈层
工具
发布

nginx多域名ssl证书

在Nginx中为多个域名配置SSL证书,通常使用SNI(Server Name Indication)技术,这允许在同一IP地址和端口上为多个域名提供SSL服务。以下是详细的步骤指南:

1. 获取SSL证书

首先,为每个域名获取SSL证书。你可以从以下途径获取:

  • Let's Encrypt:免费且广受支持。
  • 商业CA:如DigiCert、GeoTrust、Thawte等。
  • 自签名证书:适用于测试环境,但不推荐用于生产环境。

2. 安装Nginx

确保你的服务器上已经安装了Nginx。如果尚未安装,可以参考以下命令进行安装(以Ubuntu为例):

代码语言:javascript
代码运行次数:0
复制
sudo apt update
sudo apt install nginx

3. 配置Nginx服务器块

为每个域名创建一个独立的服务器块配置文件。假设你有两个域名:example.comwww.example.com

创建配置文件

代码语言:javascript
代码运行次数:0
复制
sudo nano /etc/nginx/sites-available/example.com

配置内容示例

代码语言:javascript
代码运行次数:0
复制
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;
    }
}

4. 启用配置

创建符号链接将配置文件链接到sites-enabled目录:

代码语言:javascript
代码运行次数:0
复制
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

5. 测试配置

在重新加载Nginx之前,测试配置文件是否有语法错误:

代码语言:javascript
代码运行次数:0
复制
sudo nginx -t

如果输出显示配置文件没有问题,继续下一步。

6. 重新加载Nginx

应用新的配置:

代码语言:javascript
代码运行次数:0
复制
sudo systemctl reload nginx

7. 配置防火墙

确保防火墙允许HTTP(80)和HTTPS(443)流量。例如,使用ufw

代码语言:javascript
代码运行次数:0
复制
sudo ufw allow 'Nginx Full'

8. 处理多个域名

如果你有多个域名,为每个域名重复上述步骤,创建各自的服务器块配置文件,并确保每个配置文件中的server_name正确指向对应的域名。

9. 使用Certbot自动获取和续订证书

Certbot 是一个方便的工具,可以自动获取、安装和续订Let's Encrypt证书。

安装Certbot和Nginx插件

代码语言:javascript
代码运行次数:0
复制
sudo apt install certbot python3-certbot-nginx

获取并安装证书

代码语言:javascript
代码运行次数:0
复制
sudo certbot --nginx -d example.com -d www.example.com

Certbot会自动修改Nginx配置文件,添加SSL相关配置,并启用HTTPS重定向。

设置自动续订

Let's Encrypt证书有效期为90天,Certbot可以设置定时任务自动续订:

代码语言:javascript
代码运行次数:0
复制
sudo crontab -e

添加以下行,每天检查并续订证书:

代码语言:javascript
代码运行次数:0
复制
0 0 * * * /usr/bin/certbot renew --quiet

10. 验证配置

确保所有域名都能通过HTTPS访问,并且浏览器显示安全连接。你可以使用SSL Labs的SSL测试来检查SSL配置的安全性和性能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券