帮助中心 > 关于网络安全 > 如何在Nginx中使用强制HTTPS重定向
如何在Nginx中使用强制HTTPS重定向
时间 : 2025-04-17 15:14:10
编辑 : Jtti

现代浏览器对HTTP明文请求的危险提示,使得强制HTTPS不再是高级选项,而是网站的基础配置。如果你使用Nginx搭建网站,如何优雅、安全地配置HTTPS自动跳转?

Nginx作为高性能反向代理服务器,可以通过server块进行不同端口、协议的监听。其重定向逻辑通常为监听80端口的HTTP请求,检测域名访问是否非HTTPS,301永久跳转至HTTPS地址。这种做法称为HTTP→ HTTPS强制重定向,既利于SEO,又改善用户访问体验。

在正式配置之前,确保你已经完成以下工作:

标准配置方式:一步实现强制HTTPS跳转

假设你的网站域名为example.com,SSL证书已经准备好。下面是标准的两段配置。

HTTP请求监听与重定向配置

server {
    listen 80;
    server_name example.com www.example.com;

    # 重定向所有 HTTP 请求到 HTTPS(永久跳转)
    return 301 https://$host$request_uri;
}

这段代码表示:所有访问80端口的请求(无论是根目录还是某个子路径),都将被永久重定向到对应的HTTPS地址。

HTTPS服务配置(已启用SSL)

server {
    listen 80;
    server_name example.com www.example.com;

    # 重定向所有 HTTP 请求到 HTTPS(永久跳转)
    return 301 https://$host$request_uri;
}

配置完成后:

http://example.com → 自动跳转至 https://example.com

用户无须记住端口和协议,自动进入加密连接

多域名、多端口与 HSTS 设置

场景 1:多个域名统一跳转

server {
    listen 80 default_server;
    server_name _;
    return 301 https://example.com$request_uri;
}

可用于将所有“未知域名”的请求统一跳转至主域名的 HTTPS 页面。

场景 2:添加 HSTS 安全头(强制浏览器使用 HTTPS)

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

max-age=63072000:强制使用 HTTPS 2 年

includeSubDomains:子域名也适用

preload:可提交到浏览器 HSTS 列表(需验证)

注意:一旦开启 HSTS,短期内无法回滚,务必确保 SSL 证书持续有效。

配置验证与测试方法

完成 Nginx 配置后,使用以下方式测试是否正确:

本地 curl 检查重定向:

curl -I http://example.com

输出应包含:

HTTP/1.1 301 Moved Permanently
Location: https://example.com/

浏览器访问:

直接访问 http://example.com,看是否自动跳转并显示安全锁。

在Nginx中强制启用HTTPS,是保障用户隐私、网站数据完整性的重要步骤。通过简单的配置文件调整,你可以获得浏览器信任,提升SEO权重,阻止中间人攻击,构建专业可信的网站形象。作为一名开发者或运维工程师,掌握HTTPS重定向不仅是技能,更是对用户的一份责任。

相关内容

Nginx配置gRPC转发如何实现 电子商务网站服务器选择标准是什么 判断IP是否为原生IP的方法大盘点 中转节点定义及对网络连接质量的影响分析 在SSH连接中如何设置使用本地SSH配置 原生IP和虚拟IP之间有什么关联? 路由正常可达但IP访问失败十大根源解析与实战诊断 为什么说游戏盾是游戏行业核心战略价值 远程服务器蓝屏故障原因分析和防御实战指南 CDN安全策略中IP白名单和地理封锁设置方法 
返回

24/7/365 全天候支持我们时刻恭候您

帮助中心