收藏文章 楼主
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. 在海外漂泊12年后的真实感受
  2. 45岁后“人生黄金期”是认知和创造力的新高峰
  3. 恢复或加入?重获中国国籍的路径比较
  4. 联邦政府启动“红色日落行动” 审查比特币矿机的供应链
  5. 美国政府批准了对台3.3亿美元的军售
  6. 中美两国元首在釜山会晤:就关税、大豆和稀土已经达成共识
  7. 五角大楼的机密报告:中国导弹可以击沉美军航母
  8. 学习英语12年后,终于实现了“美国梦”!
  9. 全球高等教育的新趋势:留学生求学地“多元化”
  10. 美宝家庭关切:双国籍审查和户口注销真相
  11. 中美高层通话后… 川普总统计划明年访华,芯片管制也松口了!
  12. SpaceX在加速IPO计划,目标估值1.5万亿美元!
  13. 中美AI竞争的新格局已定?
  14. MIT稳居了CS榜首!美国大学的最新排名出炉
  15. 英伟达H200芯片的对华销售仍然在受美国的两重限制
  16. 美国青少年“67”流行语的现象引关注
  17. 黄仁勋警示川普政府,再不开放“对华AI芯片出口”就来不及啦!
  18. 2026年版的“公共负担”新规复活,华人家庭遭遇精准打击!
  19. 感恩节餐桌的费用回落,零售商推出了低价套餐!
  20. 中美经贸磋商“展现战略对称”新态势
  21. ICE启动了在社交媒体的全天候监控项目
  22. 川普总统正式签属涉台法案,解放军示警!
  23. 美国“H-1B”签证新规:在境内的申请人,免缴10万美元费用!
  24. 一美分硬币“Penny”铸造历史正式终结
  25. 美国移民局(ICE)新提案打算限制福利使用,有记录者可能影响绿卡申请!
  26. 在特朗普访华之前,白宫向中国“递三份礼物”
  27. 中国已经全额缴纳了联合国会费,联合国的财政危机缓解!
  28. 中美稀土博弈,美国政策在急转直下!
  29. 强制注销户口?传闻中国在加强双重国籍监管
  30. 美国在AI竞争中失利了?阿里千问模型在全球领先
  31. 美国仍然依赖纸质信件的真相剖析
  32. 人类史上“最贵CEO”诞生!马斯克的“万亿薪酬”背后
  33. 川普政府再次出奇招!拒绝所有胖子的移民申请?
  34. 外国人的入境中国手续简化,可以提前在网上填报入境卡了!
  35. 多名移民法官在同时期被解雇,引发司法危机
  36. 川普政府终于听说了日本新首相【高市早苗】因为台海表态引发外交危机的事儿了?
头像

用户名:

粉丝数:

签名:

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