将 HTTP 请求自动重定向到 HTTPS 是提高网站安全性的重要措施。以下是几种在 Nginx 中实现 HTTP 到 HTTPS 重定向的方法:
server {
listen 80;
server_name example.com www.example.com;
# 301 永久重定向到 HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name example.com www.example.com;
# SSL 配置
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
# 其他 HTTPS 配置...
}
server {
listen 80;
server_name example.com www.example.com;
# 使用 rewrite 重定向
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 80;
server_name example.com www.example.com;
location / {
return 301 https://$server_name$request_uri;
}
}
nginx -t
测试配置是否正确nginx -s reload
使配置生效server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
# 启用 HSTS (建议先测试再启用)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# 其他配置...
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
以上配置都可以实现 HTTP 到 HTTPS 的重定向,推荐使用第一种方法,因为它简单直接且效率高。