在部署 HTTPS 站点时,通常需要将所有 HTTP(80 端口)请求强制重定向到 HTTPS(443 端口)。以下示例展示了最常用、最标准的 Nginx 跳转配置方式。
一、将所有 HTTP 请求重定向到 HTTPS
此部分配置让 Nginx 监听 80 端口,并将收到的所有请求以 301 永久重定向方式跳转到 HTTPS。
server {
listen 80;
server_name _;
return 301 https://$host$request_uri;
}
关键说明
listen 80;:监听 HTTP 默认端口server_name _;:通配任何访问域名(你也可以替换为具体域名)return 301 ...;:使用 301 永久重定向,有利于 SEO$host$request_uri:保持原始访问域名与路径参数不变
二、HTTPS 服务主机配置(443 端口)
下方是你的原始 443 配置,可在此基础上继续补充证书路径、日志等参数:
server {
listen 443 ssl http2;
server_name a.domain.com;
# SSL 证书配置示例(需根据实际路径修改)
ssl_certificate /etc/nginx/ssl/a.domain.com.crt;
ssl_certificate_key /etc/nginx/ssl/a.domain.com.key;
# 推荐的 SSL 配置项
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
# 网站根目录示例
root /var/www/a.domain.com;
location / {
try_files $uri $uri/ =404;
}
}
关键说明
listen 443 ssl http2;:监听 HTTPS,并开启 HTTP/2server_name a.domain.com;:匹配当前站点域名ssl_certificate*:配置 SSL 证书与私钥location:根据站点需求调整访问逻辑
三、完整示例(可直接使用)
# 80 → 443 强制跳转
server {
listen 80;
server_name a.domain.com;
return 301 https://$host$request_uri;
}
# HTTPS 服务
server {
listen 443 ssl http2;
server_name a.domain.com;
ssl_certificate /etc/nginx/ssl/a.domain.com.crt;
ssl_certificate_key /etc/nginx/ssl/a.domain.com.key;
root /var/www/a.domain.com;
location / {
try_files $uri $uri/ =404;
}
}