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