首页/安全/加密与证书速查/HTTP 到 HTTPS 跳转配置
TLS 与 HTTPS60 条

HTTP 到 HTTPS 跳转配置

在 80 端口用 301/308 重定向到 HTTPS,是启用 TLS 后的基础动作;要点是保留 Host 与完整 URI,并在有前置代理时避免跳转循环。

加密与证书速查安全更新于 2026-10-13

HTTP 跳转 HTTPS 是什么

在 80 端口把明文请求重定向到 HTTPS,是启用 TLS 之后最基础的一步:用户在浏览器里输入域名或点开老链接时,先命中 80 端口再被 301 跳到 HTTPS。要点是保留完整 URI 与查询串,并且在有前置代理终止 TLS 的环境中避免出现跳转循环。

基本信息

状态码301 永久重定向(可被缓存)、308 保留请求方法与请求体
nginx 写法return 301 https://$host$request_uri;(比 rewrite 更轻量)
保留项原路径与查询串一并保留,避免丢参数
反代场景上游已终止 TLS 时需依据 X-Forwarded-Proto 判断,避免死循环
配套项HSTS、Cookie 的 Secure 属性、静态资源的协议相对引用
验证方式curl -sI 查看状态码与 Location

典型使用场景

  • 站点全量强制 HTTPS:所有明文入口统一收敛
  • 老链接兼容:历史的收藏与外部引用仍指向 http 时能自动跳转
  • 多端口收敛:8080、8000 等备用端口同样跳转到 443
  • API 域名强制加密:避免请求与令牌明文传输
  • 静态资源域名:CDN 上的图片与脚本域名同样需要跳转与 HSTS

nginx 跳转片段

nginx 跳转片段
server {
    listen 80;
    server_name example.com www.example.com;
    # return 比 rewrite 轻量,且能直接保留路径与查询串
    return 301 https://$host$request_uri;
}
# 若上游负载均衡已终止 TLS,源站不应再判断协议做跳转,否则可能形成循环
# 需要时依据 X-Forwarded-Proto 判断,并信任可信代理来源

验证跳转行为

验证跳转行为
# 查看状态码与 Location,确认路径与查询串被完整保留
curl -sI http://example.com/path?a=1 | grep -iE 'HTTP/|location'
# 检查是否出现重定向循环(-L 会跟随并要求限制次数)
curl -sIL --max-redirs 5 http://example.com | grep -iE 'HTTP/|location'
# 确认最终落地页是 HTTPS 且返回 200
curl -sIL http://example.com -o /dev/null -w '%{url_effective} %{http_code}\n'

状态码选择

状态码语义适用场景
301永久重定向绝大多数站点首选,浏览器与搜索引擎会缓存
302临时重定向灰度或临时维护期使用
307临时且保留方法需要保留 POST 方法与请求体的临时跳转
308永久且保留方法需要长期保留方法与请求体的跳转
前置代理已终止 TLS 时,源站再判断「请求是 http 就跳到 https」会产生无限重定向:源站看到的始终是 http。正确做法是信任代理传来的协议头,或干脆让最外层设备统一负责跳转。
跳转是第一步而不是全部:还应在 HTTPS 响应里加 HSTS,给会话 Cookie 加 Secure 与 HttpOnly,并排查页面里写死的 http 资源引用,否则会出现混合内容告警,浏览器仍会标记为不安全。

易错点

  • 用 rewrite 携带查询串却丢了参数:优先使用 return 301 搭配 $request_uri,避免参数丢失
  • 反代环境双向跳转:源站与最外层设备都在做 http 到 https 判断,形成无限重定向
  • 使用 301 后想快速回退:浏览器会缓存永久重定向,调整策略时要考虑缓存清理成本
  • 只跳转主域名:www、API、静态资源域名未同步配置,用户仍可能命中明文入口
  • 跳转后页面仍引用 http 资源:出现混合内容告警,浏览器安全标识失效,需要全局替换或使用协议相对地址

数据来源与参考

  • nginx 官方文档(return 指令)
  • RFC 9110 §15.4(308 状态码)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌