收藏文章 楼主
Nginx配置 ~ 泛域名http默认跳转https
网友【Ranger】 2020-07-05 00: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-05 00:43:53  回复

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

暂无用户组 升级
退出
等级:0级
美果:
美过
精华推荐
  1. 川普总统公开称赞中方领导人,认可中美可以友好相处!
  2. 胃癌发病率和筷子🥢有关系?
  3. 川普总统正式接任,成为美国第47任总统
  4. 重大胜利🤑川普总统“又赢了一把”
  5. 金牌讲师在洛杉矶的生存之道
  6. 川普总统首次公开回应“TRUMP”数字货币项目
  7. 警告川普和马斯克的?美军特种兵策划了Cybertruck爆炸案
  8. “TikTok难民”如何玩转中国社交网络?一夜间“小红书”刷屏全美
  9. 中国企业在2025 CES“疯狂圈粉儿”
  10. 美国最高法院“无视了”川普的延期请求?TikTok在下周关闭了!
  11. 阔别四年,回国大谈AI的马云可以再次盘活阿里吗?
  12. 拿英伟达“开刀”,是中国GPU自主化的一步险棋!
  13. 为何大火一直“不放过”洛杉矶?
  14. 美军再次增建两艘新航母
  15. 川普总统在接任首日或将推上百项行政命令
  16. 怪自己心善帮错人!美国华人在Costco购物后,被警察抄家!
  17. 在美国买房的省税攻略“十个妙招”
  18. 美国政府即将全面解除对华限制?
  19. 罪犯也能当总统?美国的底线呢?
  20. 中美关系的新篇章?中国的人民日报开始征集“中美友好合作故事”
  21. 川普总统在开工首日就向1300万非法移民动手了
  22. 川普总统“喜获”年度人物封面,商界CEO们开始“跪舔”!
  23. 川普总统公开表示美中联手可以解决世界上所有问题,当日还会见了TikTok首席执行官!
  24. 周受资 ~ 真正强大的CEO
  25. 以色列和哈马斯终于同意停火
  26. 首次入境美国在旧金山机场遭遇了小黑屋
  27. 针对纽约州指控,他提出无罪抗辩!
  28. 十年了,马航MH370的新一轮探寻工作开启?
  29. 态度“回归自然”了?川普胜选后首次接受电视访谈
  30. “赴美生子”这次真完了,川普政府即将终结“最容易移民方法”
  31. 全美最昂贵房产分布的邮政编码榜单出炉
  32. “CEO杀手”或面临死刑?超级明星律师为其辩护,好莱坞的专题纪录片即将开机拍摄!
  33. 最后期限了,TikTok将会卖给谁?伊隆·马斯克?
  34. TikTok在美国全面恢复了
  35. 移民故事:在北美生活十年后的“回头路”
  36. 绝非泛泛之辈!枪杀了美国医保巨头公司高管的嫌疑人落网

美国动态 · 美果转盘 · 美果商店

Your IP: 3.139.80.172, 2025-02-01 01:53:13

Processed in 0.60965 second(s)

头像

用户名:

粉丝数:

签名:

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