← 返回首页

Nginx HTTPS 与基础安全加固

为网站开启 HTTPS 是生产环境的基本要求。除了配置证书,还应关注协议版本、HTTP 到 HTTPS 的跳转、安全响应头以及访问限制等基础安全措施。

一、HTTPS 基础配置

证书文件通常包括公钥证书和私钥文件,配置示例如下:

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

    ssl_certificate     /etc/nginx/ssl/example.com.pem;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

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

二、HTTP 跳转 HTTPS

为了避免用户通过明文 HTTP 访问,可以增加 80 端口跳转:

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

三、常见安全响应头

安全响应头可以降低部分浏览器侧攻击风险:

add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header X-XSS-Protection "1; mode=block" always;

如果业务条件允许,也可以启用 HSTS:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
启用 HSTS 前需要确认 HTTPS 长期稳定可用,否则用户浏览器会强制使用 HTTPS,可能影响访问。

四、限制敏感路径访问

对于管理入口或内部接口,可以通过 IP 白名单进行限制:

location /admin/ {
    allow 192.168.1.0/24;
    deny all;
    proxy_pass http://127.0.0.1:8080;
}

五、隐藏版本信息

建议关闭响应中的 Nginx 版本信息:

server_tokens off;

六、小结

HTTPS 配置不仅是证书部署,还包括协议、跳转、响应头和访问控制。上线前应使用浏览器和安全扫描工具做基础检查,确保配置符合业务要求。