帮助中心 >
  关于网络安全 >
  如何在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,又改善用户访问体验。

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

  • 安装好Nginx;
  • 拥有域名并正确解析至服务器;
  • 申请并安装了SSL证书
  • 拥有Nginx的root权限进行配置修改。

标准配置方式:一步实现强制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重定向不仅是技能,更是对用户的一份责任。

售前客服
JTTI-Selina
JTTI-Ellis
JTTI-Eom
JTTI-Amano
JTTI-Jean
JTTI-Coco
JTTI-Defl
技术支持
JTTI-Noc
标题
电子邮件地址
类型
销售问题
销售问题
系统问题
售后问题
投诉与建议
市场合作
信息
验证码
提交