在 Nginx 中实现 HTTP 自动跳转到 HTTPS 是网站安全的基本要求,以下是几种常见的实现方式:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name example.com www.example.com;
# SSL 配置和其他 HTTPS 设置...
}
server {
listen 80;
listen 443 ssl;
server_name example.com www.example.com;
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
# SSL 配置和其他 HTTPS 设置...
}
server {
listen 80;
server_name example.com www.example.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
使用 301 永久重定向:有利于 SEO 和浏览器缓存
包含 $host 或 $server_name:确保重定向到正确的域名
测试配置:修改后使用 nginx -t
测试配置语法
重载配置:测试无误后执行 nginx -s reload
使配置生效
考虑 HSTS:对于安全性要求高的网站,可以添加 HTTP Strict Transport Security 头
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
选择哪种方法取决于你的具体需求和服务器配置,第一种方法是最清晰和推荐的方式。