插件窝 干货文章 Nginx服务器https如何配置

Nginx服务器https如何配置

Nginx 配置 SSL 证书 1006    来源:    2025-04-22

Nginx HTTPS 配置指南

配置Nginx支持HTTPS是保护网站数据安全的重要步骤。以下是完整的HTTPS配置方法:

前提条件

  1. 已安装Nginx
  2. 拥有有效的SSL证书(可以是自签名证书或CA颁发的证书)
  3. 证书文件(通常为.crt或.pem)和私钥文件(通常为.key)

基本HTTPS配置

1. 将证书文件上传到服务器

通常存放在 /etc/nginx/ssl/ 目录下:

sudo mkdir -p /etc/nginx/ssl/
sudo cp your_domain.crt /etc/nginx/ssl/
sudo cp your_domain.key /etc/nginx/ssl/

2. 修改Nginx配置文件

/etc/nginx/sites-available/your_site 中添加HTTPS配置:

server {
    listen 443 ssl;
    server_name yourdomain.com www.yourdomain.com;

    ssl_certificate /etc/nginx/ssl/your_domain.crt;
    ssl_certificate_key /etc/nginx/ssl/your_domain.key;

    # 启用SSL会话缓存以提高性能
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # 安全配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';

    # 其他配置...
    location / {
        root /var/www/html;
        index index.html index.htm;
    }
}

3. 配置HTTP重定向到HTTPS

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$host$request_uri;
}

高级安全配置

1. 启用HSTS (HTTP Strict Transport Security)

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

2. OCSP Stapling 配置

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/ssl/ca_bundle.crt;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

3. DH参数增强

生成DH参数:

sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

然后在配置中添加:

ssl_dhparam /etc/nginx/ssl/dhparam.pem;

测试与重启

  1. 测试配置是否正确:
sudo nginx -t
  1. 重启Nginx使配置生效:
sudo systemctl restart nginx

证书自动续期(使用Let's Encrypt)

如果使用Let's Encrypt证书,可以使用certbot自动续期:

  1. 安装certbot:
sudo apt install certbot python3-certbot-nginx
  1. 获取证书:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
  1. 设置自动续期:
sudo certbot renew --dry-run

常见问题解决

  1. SSL证书错误:确保证书路径正确,权限设置正确(通常需要root可读)
  2. 混合内容警告:确保网站所有资源都使用HTTPS链接
  3. 性能问题:启用SSL会话缓存和OCSP Stapling可提高性能
  4. 旧版浏览器不支持:如果需要支持旧浏览器,可以添加TLSv1.1(但不推荐)

通过以上配置,您的Nginx服务器将能够安全地提供HTTPS服务。