收藏文章 楼主
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. 任天堂的Switch 2正式发售,参数细节全曝光!
  2. 中美两国元首针对当下双边关系和经贸合作,☎️通话交流!
  3. 难怪马斯克公开认错… 川普总统的相关杀器可以更多?
  4. “全球最强护照”排行榜又更新了(2025版)
  5. 美国国会通过了减税法案,马斯克和川普总统再次激烈交锋!
  6. 英伟达的市值突破了四万亿美元,创人类历史纪录!
  7. 遥控器电池,被幼儿误吞… 欧系保险公司赔付了近1.4亿元人民币!
  8. “外星来客”以每小时21.6万公里的速度向地球飞来
  9. 萝莉岛是美国的政治中心?马斯克并非不懂政治,而是太懂了!
  10. 孩子沉迷手机的真相和破局之道
  11. 美国移民新机遇:紧缺人才的绿卡通道“无需排期”
  12. 宗庆后家族的多处海外房产曝光,价值数亿元!
  13. 比尔盖茨的财富突然蒸发了510亿美元,真相却令人肃然起敬!
  14. 川普政府打算“发钱啦”
  15. 韦伯望远镜(JWST)发布迄今为止最大的早期宇宙地图
  16. 马斯克声称川普在“爱泼斯坦名单”,白宫回应:局面令人遗憾!
  17. 健身网红在飞机上的着装引争议
  18. 川普和马斯克的公开交锋升级了
  19. 川普政府在力推药价改革和数字医疗系统
  20. 美国新法案“大漂亮”引发了全球资本配置大调整
  21. 突然“失去住持”的少林寺情况如何了?
  22. 中国政府在构筑战略资源防线,重拳打击稀土走私!
  23. 核聚变技术或将成为黄金价格的颠覆者
  24. 美国再次宣布退出联合国教科文组织
  25. 川普总统宣布“金卡计划”网站开放
  26. 川普政府计划改革移民签证制度和入籍考试
  27. 川普总统声称希望中国“增加美油采购”
  28. 中美连谈5小时,川普总统公开感叹“中国太强硬”… 英伟达在加紧扩大芯片出口量
  29. 世界瞩目的电话,十个不寻常的细节剖析!
  30. 马斯克打算组建新党“美国党”代表中间派
  31. 中美经贸谈判重启,瑞典磋商和商界代表团访华“双管齐下”
  32. QQ等级256级用户诞生,首次解锁“时光企鹅”图标!
  33. 移民并非背叛,是一种勇敢的人生轨迹选择!
  34. 川普总统批评支持者,马斯克激烈回应!
  35. 广西防城港“奔驰女司机事件”引发全网热议
  36. 在美国可以感受欧洲风情的五座小镇

美国动态 美果搜索

Your IP: 216.73.216.57, 2025-08-07 18:04:53

Processed in 0.10067 second(s)

头像

用户名:

粉丝数:

签名:

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