插件窝 干货文章 nginx怎么配置支持https

nginx怎么配置支持https

配置 Nginx 证书 Certbot 457    来源:    2025-04-24

Nginx HTTPS 配置指南

要在Nginx上配置HTTPS支持,您需要完成以下步骤:

1. 获取SSL证书

首先,您需要获取SSL证书和私钥文件。您可以从以下途径获取: - 从证书颁发机构(CA)如Let's Encrypt、DigiCert等购买 - 使用Let's Encrypt免费证书(推荐) - 自签名证书(仅用于测试)

2. 基本HTTPS配置

以下是一个基本的HTTPS配置示例:

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;

    # 安全增强配置
    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. 使用Let's Encrypt免费证书(推荐)

使用Certbot工具自动获取和配置Let's Encrypt证书:

  1. 安装Certbot:
# Ubuntu/Debian
sudo apt-get install certbot python3-certbot-nginx

# CentOS/RHEL
sudo yum install certbot python3-certbot-nginx
  1. 获取证书并自动配置Nginx:
sudo certbot --nginx -d example.com -d www.example.com

Certbot会自动完成证书获取和Nginx配置。

4. HTTP重定向到HTTPS

为了强制使用HTTPS,添加以下配置将HTTP(80端口)请求重定向到HTTPS:

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

5. 高级安全配置

# 启用HSTS(HTTP Strict Transport Security)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

# 禁用不安全的内容类型
add_header X-Content-Type-Options nosniff;

# 防止点击劫持
add_header X-Frame-Options SAMEORIGIN;

# XSS保护
add_header X-XSS-Protection "1; mode=block";

# 启用OCSP Stapling提高性能
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

6. 验证配置

  1. 检查Nginx配置语法:
sudo nginx -t
  1. 重新加载Nginx配置:
sudo systemctl reload nginx
  1. 使用SSL Labs测试您的配置: https://www.ssllabs.com/ssltest/

7. 自动续订Let's Encrypt证书

Let's Encrypt证书有效期为90天,设置自动续订:

sudo certbot renew --dry-run  # 测试续订

然后添加cron任务(每月自动续订):

0 0 1 * * /usr/bin/certbot renew --quiet

通过以上步骤,您的Nginx服务器将安全地支持HTTPS连接。