收藏文章 楼主
Nginx配置 ~ 泛域名http默认跳转https
网友【Ranger】 2020-07-04 16:43:53 分享在【时代发展的印记】版块    1    9

网友分享在meiguo.com上的图片

基于全球的网络安全,现在浏览器基本都将默认的HTTP站点标识为不安全,很多站点都将HTTP网站添加SSL证书,切换至HTTPS加密协议。

Nginx作为高性能的HTTP和反向代理web服务,一般作为服务入口提供负载均衡和流量分发,因此我们在Nginx上添加SSL证书,实现HTTPS访问;同时为保证用户无感知,需要配置HTTP默认跳转HTTPS。

下面我们来解析下泛域名下的http默认跳转https。

rewrite跳转

server{
listen 80;
server_name *.test.cn;
rewrite ^(.*)$ https://$server_name$1 permanent;
}

此时浏览器访问报错:

网友分享在meiguo.com上的图片

其实此时使用rewrite跳转在单域名是没有问题,但是在多域名或泛域名下是有问题的,我们此时使用在nginx安装echo-nginx-modulem模块以调试(模块安装忽略)。

调试过程

1.依次打印nginx内置变量server_name,host,http_host

server{
listen 80;
server_name *.test.cn;
location / {
default_type 'text/plain';
echo $server_name;
echo $host;
echo $http_host;
}
}

浏览器访问:

网友分享在meiguo.com上的图片

2.错误分析

从变量打印来看:

server_name值为*.test.cn

host值为www.test.cn

http_host值为www.test.cn

此时虽然我们输入域名为www.test.cn,但实际rewrite的url为:https://*.test.cn,因此访问报错。

注意:如果你的nginx的域名为"server_name a.test.cn *.test.cn www.test.cn",则变量server_name的值为a.test.cn,即匹配的是配置文件中server_name第一个域名。

3.解决方式

根据变量值,我们需要更改rewrite后的url为:

 rewrite ^(.*)$ https://$host$1 permanent;

rewrite ^(.*)$ https://$http_host$1 permanent;

return

return除了支持直接跟状态码,还可以跟字符串或者url链接,用于返回字符串或url链接。

http默认跳转为https配置如下:

server{
listen 80;
server_name *.test.cn;
return 301 https://$http_host$request_uri;
}

总结

return和rewrite虽然都实现了跳转,但是是有区别的:

1.return 指令简单高效,建议尽量使用 return,而不是 rewrite;

2.return 指令告诉 Nginx 停止处理请求,直接返回 301 (Moved Permanently) 代码并跳转重写后的地址;

3.rewrite指定并不会立即结束Nginx的处理流程,会根据重写后的地址继续匹配相应的location,除非使用break结束。

扩展

如果使用Nginx+Lua,你会发现在整个Nginx的访问流程中,return指令处于rewrite阶段,而rewrite指令处于access阶段,因此return的优先级是高于ngx_limit_req访问频率限制的。

出处:头条号 @木讷大叔爱运维

meiguo.com 发布人签名/座右铭谁还没年轻过呢?呵呵呵
大家都在看
楼主新近贴
回复/评论列表
默认   热门   正序   倒序
meiguo.com 创始人

emotion

9   2020-07-04 16:43:53  回复

回复/评论:Nginx配置 ~ 泛域名http默认跳转https

暂无用户组 升级
退出
等级:0级
美果:
美过
精华推荐
  1. 李开复:如果老板不AI,公司将会被AI淘汰!
  2. 骨胶水的研发获突破,临床试验显示了安全有效!
  3. 在美国生活半年,真实观察了文化差异!
  4. 美国签证新规:申请人须回母国面谈
  5. 中美元首长“电话粥”,聚焦经贸和TikTok合作!
  6. 川普政策变动,竟然催生了智利的生育旅游热潮?
  7. 美国市场的智能手机“印度制造”的份额激增
  8. 川普总统的“科技巨头宴”收获千亿级的投资承诺
  9. 马斯克的净资产创纪录,突破5000亿美元!
  10. 联合国大会“史上最尴尬”一幕:他上台后,观众纷纷撤离!
  11. 我的人生有三个账户!伊隆·马斯克在斯坦福大学的最新演讲
  12. 美股市值突破“全球GDP半数”大关
  13. 马斯克成为全球首位身家5000亿美元的富豪
  14. 母亲给大一女儿恋爱八项要求
  15. TikTok美国业务的“合规运营”方案细节披露
  16. 福建舰“电磁弹射系统技术”获全球关注
  17. 川普总统签署了备忘录,贩毒集团成为“国家之敌”!
  18. 大学排名更新:顶尖学府稳固,新兴学校快速上升
  19. 中美两国在马德里谈判,聚焦TikTok和关税问题!
  20. 川普总统在联合国演讲,声称中国不愿用风力发电?
  21. 美国宣传制裁东南亚的19个电信诈骗网络实体
  22. 美国“风行者”超大运输机计划曝光
  23. 联邦法院驳回了川普政府的“出生公民权”行政令
  24. 美国的七大都会区“房市调头”,买方作主了!
  25. 中国AI芯片产业迎来了技术突破和生态崛起
  26. 在美国买房半年后,总结了两个扎心感受!
  27. iPhone 17系列新品、iPhone Air发布了!
  28. Zillow和Redfin“摊上大事儿”!五大州的总检察长起诉了房产平台合谋做局
  29. 佛罗里达的一名中学生在AI提问,然后被捕了!
  30. 毅力号火星车揭示了杰泽罗陨石坑的水活动历史
  31. 美国签证新规“取消第三国面签”的选项了
  32. 美国众议院通过了巨额军费预算,马斯克警示财政风险!
  33. 三只小猪都知道砖头房子更好,为何美国房子是木头房?
  34. 启程回国:美元很香,但回家的路更香!
  35. 川普政府打算发放两千美元的关税补贴
  36. 最高法院裁定:支持川普政府的移民执法政策

美国动态 美果搜索

Your IP: 216.73.216.27, 2025-10-11 21:22:25

Processed in 0.37412 second(s)

头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息
已有0次打赏
(9) 分享
分享
取消