插件窝 干货文章 Nginx如何实现http自动跳转到https

Nginx如何实现http自动跳转到https

server example 配置 Nginx 462    来源:    2025-04-27

Nginx 实现 HTTP 自动跳转到 HTTPS 的几种方法

在 Nginx 中实现 HTTP 自动跳转到 HTTPS 是网站安全的基本要求,以下是几种常见的实现方式:

方法一:使用单独的 HTTP 服务器块重定向(推荐)

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 设置...
}

方法三:使用 rewrite 指令

server {
    listen 80;
    server_name example.com www.example.com;
    rewrite ^(.*)$ https://$host$1 permanent;
}

最佳实践建议

  1. 使用 301 永久重定向:有利于 SEO 和浏览器缓存

  2. 包含 $host 或 $server_name:确保重定向到正确的域名

  3. 测试配置:修改后使用 nginx -t 测试配置语法

  4. 重载配置:测试无误后执行 nginx -s reload 使配置生效

  5. 考虑 HSTS:对于安全性要求高的网站,可以添加 HTTP Strict Transport Security 头

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

选择哪种方法取决于你的具体需求和服务器配置,第一种方法是最清晰和推荐的方式。