插件窝 干货文章 Nginx如何将HTTP重定向到HTTPS

Nginx如何将HTTP重定向到HTTPS

server example 配置 定向 254    来源:    2025-04-26

Nginx HTTP 重定向到 HTTPS 配置指南

将 HTTP 请求自动重定向到 HTTPS 是提高网站安全性的重要措施。以下是几种在 Nginx 中实现 HTTP 到 HTTPS 重定向的方法:

方法一:单独配置 HTTP 服务器块(推荐)

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

方法二:使用 rewrite 指令

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;
    }
}

注意事项

  1. 使用 301 状态码:表示永久重定向,有利于 SEO
  2. 测试配置:修改后运行 nginx -t 测试配置是否正确
  3. 重新加载配置:测试无误后运行 nginx -s reload 使配置生效
  4. 确保 HTTPS 配置正确:在重定向前确认 SSL 证书已正确配置
  5. 考虑 HSTS:可以添加 Strict-Transport-Security 头增强安全性

完整示例(包含 HSTS)

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 的重定向,推荐使用第一种方法,因为它简单直接且效率高。