一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - Nginx - Nginx 重定向時獲取域名的方法示例

Nginx 重定向時獲取域名的方法示例

2019-12-25 13:57darkbaby123 Nginx

本篇文章主要介紹了Nginx 重定向時獲取域名的方法示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

TL;DR

如果你在處理 Nginx 重定向時要獲取原請求的域名(比如 HTTP 到 HTTPS),請用 $host 而不是 $server_name 。

問題和解決方案

今天碰到一個問題,服務器上一個子域名的請求重定向到另一個子域名上面去了。查了一段時間發現這個問題只有在 HTTP 到 HTTPS 跳轉的時候才會發生。大概是這樣:

從 HTTP 的 sub2 子域名跳轉到 HTTPS 的 sub1 子域名

http://sub2.example.com/more_things -> https://sub1.example.com/more_things

我用的 Nginx ,當初為了讓 HTTP 請求跳轉到同名的 HTTPS 請求,配置如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
http {
 server {
 listen  80;
 server_name sub1.example.com sub2.example.com;
 return  301 https://$server_name$request_uri;
 }
 
 server {
 listen  443 ssl spdy;
 server_name sub1.example.com sub2.example.com;
 # ...
 }
}

因為 301 是永久重定向,某些瀏覽器的緩存會記住重定向,下次訪問原地址就會直接向新地址發請求,所以這個問題在瀏覽器里面不一定重現得了(包括 Chrome 的 Incognito Window),能每次完整重現的方式只有 curl 。

?
1
2
3
4
5
6
7
8
9
 
HTTP/1.1 301 Moved Permanently
Server: nginx/1.9.3 (Ubuntu)
Date: Tue, 23 Feb 2016 06:06:30 GMT
Content-Type: text/html
Content-Length: 193
Connection: keep-alive

查了一下,發現問題出在 $server_name 變量上。這個變量會始終返回 server_name 中第一個名字。這里其實應該用 $host 變量。修改后的配置如下:

?
1
2
3
4
5
6
7
http {
 server {
 listen  80;
 server_name sub1.example.com sub2.example.com;
 return  301 https://$host$request_uri;
 }
}

$host 變量會按照以下優先級獲取域名:

  1. Request-Line 中的域名信息。Request-Line 包含 method, uri 和 HTTP 版本。
  2. 請求頭信息中的 "Host" 。
  3. Nginx 中匹配的 server_name 配置。

這幾乎可以保證在任何環境下正確地得到域名。如果是同域名下的重定向最好都用 $host 。

參考資料

Nginx Wiki - $host
Nginx 官方文檔。其中對 $host 講的比較詳細,但 $server_name 只是一筆帶過。

StackOverflow - What is the difference between Nginx variables $host, $http_host, and $server_name?
StackOverflow 上關于三個變量區別的討論。里面提到了為什么 $host 是適用于所有場景的唯一選擇。

HTTP/1.1 : Request-Line
HTTP/1.1 規范中對 Request-Line 的描述。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://segmentfault.com/a/1190000004477106

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 狠狠五月天中文字幕 | 日本人妖网站 | 精品国产免费久久久久久婷婷 | 乌克兰肛交影视 | 高级黄色片 | 男人天堂国产 | 日本全黄三级在线观看 | 亚洲尿尿 | 亚洲国产日韩成人综合天堂 | 俄罗斯三级完整版在线观看 | 久久视频在线视频观看天天看视频 | 午夜在线观看免费完整直播网 | 视频在线免费看 | 成人一区二区免费中文字幕 | 女人把扒开给男人爽的 | 91精品国产美女福到在线不卡 | 久久中文电影 | 亚洲区精品久久一区二区三区 | 91久久偷偷做嫩草影院电 | 1769在线观看 | 按摩院已婚妇女中文字幕 | 肉宠文很肉到处做1v1 | 精品国产品国语在线不卡丶 | 99免费精品 | 天堂俺去俺来也www久久婷婷 | 天天干夜夜添 | 色淫阁小说 | 日本不卡视频免费 | 日本午夜vr影院新入口 | 幸福草电视剧演员表介绍 | h动态图男女啪啪27报 | 向日葵视频app下载18岁以下勿看 | 丝袜爆操 | 三极片在线观看 | 农村老妇1乱69系列小说 | 91精品国产综合久久福利 | 日剧整部剧护妻狂魔免费观看全集 | 白丝美女用胸伺候主人 | 丝瓜视频在线观看污 | tk白丝丨vk| 天天射天天舔 |