站点上了 HTTPS 后,必须让所有 http 请求 301 到 https,否则用户手动输域名还会走明文。

操作步骤

server {
    listen 80;
    server_name xirangzhe.com www.xirangzhe.com;
    return 301 https://$host$request_uri;
}

要点速览

  • 用 return 301 而非 rewrite,语义清晰且性能更好。
  • $host 保留用户访问的域名,$request_uri 保留完整路径与 query,跳转后不打乱路由。
  • 此举配合 HSTS 后可进一步避免首次明文请求被劫持。
全站 HTTPS 的最后一公里,就是把 80 端口的请求统统 301 走。