怎么在Nginx 重定向时获取域名

发布时间:2025-09-19 点击:14
服务器
怎么在nginx 重定向时获取域名?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
http 请求跳转到同名的 https 请求,配置如下:
http{server{listen80;server_namesub1.example.comsub2.example.com;return301https://$server_name$request_uri;}server{listen443sslspdy;server_namesub1.example.comsub2.example.com;#…}}
因为 301 是永久重定向,某些浏览器的缓存会记住重定向,下次访问原地址就会直接向新地址发请求,所以这个问题在浏览器里面不一定重现得了(包括 chrome 的 incognito window),能每次完整重现的方式只有 curl 。
$curl-ihttp://sub2.example.com/http/1.1301movedpermanentlyserver:nginx/1.9.3(ubuntu)date:tue,23feb201606:06:30gmtcontent-type:text/htmlcontent-length:193connection:keep-alivelocation:https://sub1.example.com/
查了一下,发现问题出在$server_name变量上。这个变量会始终返回 server_name 中第一个名字。这里其实应该用$host变量。修改后的配置如下:
http{server{listen80;server_namesub1.example.comsub2.example.com;return301https://$host$request_uri;}}
$host变量会按照以下优先级获取域名:
request-line 中的域名信息。request-line 包含 method, uri 和 http 版本。
请求头信息中的 \”host\” 。
nginx 中匹配的 server_name 配置。
看完上述内容,你们掌握怎么在nginx 重定向时获取域名的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注西部数码资讯频道,感谢各位的阅读!

欧洲云服务器哪家好
百度云服务器拒绝访问
2019阿里如何买云服务器便宜
2022最新微信红包序列号怎么领取 微信红包序列号免费领取大全
推荐购买哪款云服务器
专用云服务器价格
云服务器有硬盘内存吗
考驾照用什么软件好 实用的驾考软件下载推荐