收藏文章 楼主
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. 2025年,必须认识的一个英文单词 ~ tariff
  2. 【读懂AI Agent】MetaGPT、Mila、斯坦福、耶鲁、谷歌的合作论文
  3. 全球研究机构top10盘点:中国9家,美国1家
  4. 川普总统:在未来几周内开始发放“金卡签证”
  5. 华人科学家再次遭遇系统性排查,75%留美学者“萌生去意”!
  6. 中国的中产家庭,送孩子赴美留学就是鸡肋之举?
  7. AI半壁江山是中国人?黄仁勋“敲警钟”:美国须觉醒!
  8. 美国“大规模”取消国际留学生的签证
  9. 独自搭乘美国硬座火车,52小时横穿美国!
  10. 这位美国年轻人在中国玩儿一圈,浪费掉美国政府的16亿美金?
  11. 中方意识到谈判时机已至?迅速派出“王牌代表应邀”和美国财长会面了
  12. 美国华人在近期出入境美国,绿卡和签证的持有者须知!
  13. 哪些关键技术决定了如今大模型格局?Google的首席科学家“万字演讲”回顾AI发展的十年
  14. 台湾政府:一场误会呀
  15. 关税战持续了96小时… 突然大反攻?
  16. 中美关税战的最佳写实作品~乌合麒麟发布《就不跪》
  17. Google决定终止开源Android啦?
  18. 马斯克的丑闻?和多名女性有染,有上百个孩子?
  19. 遭遇无故吊销学签,藤校的中国留学生起诉且赢了🇺🇸国土安全部!
  20. 关于“跨国婚姻”婚姻绿卡,给配偶申请绿卡的各种细节问题!
  21. 瞄准美国公民了?川普总统的“驱逐行动”在变本加厉
  22. 中国“不陪川普玩”了… 从此不理会美方闹剧!
  23. 中美博弈2.0了?川普政府“百日执政”,撤回对华善意!
  24. 华尔街“教父”空降北京,李嘉诚的“228亿美元交易”突遭截胡
  25. 美国小伙儿在武当山修行十余年,终于获得“中国绿卡”了!
  26. 美国驻华大使馆:“赴美生子”一律拒签
  27. 百万民众“上街游行”抗议川普政府的百天?
  28. 美国《时代》周刊:DeepSeek【梁文锋】
  29. BBC:在川普政府的关税打击下,为何中国不低头?
  30. 美国人在凌晨三点排队,不为苹果手机… 竟然是为中国毛绒玩具“拉布布”?
  31. 川普关税政策可能导致意外后果
  32. 在量子世界“玩儿游戏”?物理学家展示了量子计算机的新前景
  33. 盘点美国最繁华的城市 top10
  34. 近半数中国小包裹的接收人是贫困美国百姓?
  35. 童工可以合法夜班了?
  36. 这小伙年仅25岁,已经是百亿美金公司的创始CEO了!

美国动态 美果搜索

Your IP: 52.14.186.192, 2025-05-10 07:33:02

Processed in 0.18109 second(s)

头像

用户名:

粉丝数:

签名:

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