linux

Nginx SSL配置文件详解

小樊
35
2025-12-06 20:43:59
栏目: 云计算

Nginx SSL 配置文件详解

一 前置准备与目录结构

二 最小可用 HTTPS 配置

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;

    # 证书与私钥(Let's Encrypt 常用 fullchain.pem + privkey.pem)
    ssl_certificate     /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;

    # 仅启用安全的 TLS 协议
    ssl_protocols TLSv1.2 TLSv1.3;

    # 优先使用服务器套件,选择支持前向保密的 GCM 套件
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:
                 ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';

    # 会话复用,提升握手性能
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;

    root /usr/share/nginx/html;
    index index.html;
}

三 进阶安全与性能优化

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

四 完整示例含 HTTP 跳转与验证

# HTTP -> HTTPS 跳转
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

# HTTPS 服务
server {
    listen 443 ssl http2;
    server_name example.com www.example.com;

    ssl_certificate     /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;

    # 安全协议与套件
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:
                 ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';

    # 会话复用
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;

    # OCSP Stapling
    ssl_stapling on;
    ssl_stapling_verify on;

    # HSTS(谨慎启用,确保全站 HTTPS)
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";

    root /usr/share/nginx/html;
    index index.html;
}

五 常见问题与排查要点

0
看了该问题的人还看了