Nginx proxy_set_header Host $host 和 proxy_set_header Host $http_host 的作用對比

1、瀏覽器直接訪問服務(wù),獲取到的 Host 包含瀏覽器請求的 IP 和端口

# cat ngx_header.py 
from flask import Flask, request, jsonify
app = Flask(__name__)


@app.route('/')
def get_host():
    host = request.headers.get('Host')
    return jsonify({'Host': host}), 200


if __name__ == '__main__':
    app.run(host='10.1.200.107', port=5000)

# python ngx_header.py

結(jié)果如下:


2、配置 nginx 代理服務(wù)后
2.1 不設(shè)置 proxy_set_header Host 時,瀏覽器直接訪問 nginx,獲取到的 Host 是 proxy_pass 后面的值忌怎,即 $proxy_host 的值,參考 http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header

# cat ngx_header.conf 
server {
    listen 8090;
    server_name _;
    location / {
        proxy_pass http://10.1.200.107:5000;
    }
}

結(jié)果如下:


2.2 設(shè)置 proxy_set_header Host $host 時酪夷,瀏覽器直接訪問 nginx榴啸,獲取到的 Host 是 $host 的值,沒有端口信息

# cat ngx_header.conf 
server {
    listen 8090;
    server_name _;
    location / {
        proxy_set_header Host $host;
        proxy_pass http://10.1.200.107:5000;
    }
}

結(jié)果如下:



2.3 設(shè)置 proxy_set_header Host $host:$proxy_port 時晚岭,瀏覽器直接訪問 nginx鸥印,獲取到的 Host 是 $host:$proxy_port 的值

# cat ngx_header.conf 
server {
    listen 8090;
    server_name _;
    location / {
        proxy_set_header Host $host:$proxy_port;
        proxy_pass http://10.1.200.107:5000;
    }
}

結(jié)果如下:


2.4 設(shè)置 proxy_set_header Host $http_host 時,瀏覽器直接訪問 nginx坦报,獲取到的 Host 包含瀏覽器請求的 IP 和端口

server {
    listen 8090;
    server_name _;
    location / {
        proxy_set_header Host $http_host;
        proxy_pass http://10.1.200.107:5000;
    }
}

結(jié)果如下:



2.5 設(shè)置 proxy_set_header Host $host 時库说,瀏覽器直接訪問 nginx,獲取到的 Host 是 $host 的值片择,沒有端口信息潜的。此時代碼中如果有重定向路由,那么重定向時就會丟失端口信息字管,導(dǎo)致 404

# tree .
.
├── ngx_header.py
└── templates
    ├── bar.html
    └── foo.html

1 directory, 3 files

// ngx_header.py 代碼
# cat ngx_header.py 
from flask import Flask, request, render_template, redirect
app = Flask(__name__)


@app.route('/')
def get_header():
    host = request.headers.get('Host')
    return render_template('foo.html',Host=host)


@app.route('/bar')
def get_header2():
    host = request.headers.get('Host')
    return render_template('bar.html',Host=host)


@app.route('/2bar')
def get_header3():
    # 代碼層實現(xiàn)的重定向
    return redirect('/bar')


if __name__ == '__main__':
    app.run(host='10.1.200.107', port=5000)

// foo.html 代碼
# cat templates/foo.html 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>foo</title>
</head>
<body>
Host: {{ Host }}
</br>
<a href="2bar"">頁面跳轉(zhuǎn)</a>
</body>
</html>

// bar.html 代碼
# cat templates/bar.html 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>bar</title>
</head>
<body>
Host: {{ Host }}
</body>
</html>

# python ngx_header.py 

# cat ngx_header.conf 
server {
    listen 8090;
    server_name _;
    location / {
        proxy_set_header Host $host;
        proxy_pass http://10.1.200.107:5000;
    }
}

結(jié)果如下:




最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末啰挪,一起剝皮案震驚了整個濱河市信不,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌亡呵,老刑警劉巖抽活,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異锰什,居然都是意外死亡下硕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門汁胆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卵牍,“玉大人,你說我怎么就攤上這事沦泌。” “怎么了辛掠?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵谢谦,是天一觀的道長。 經(jīng)常有香客問我萝衩,道長回挽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任猩谊,我火速辦了婚禮千劈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘牌捷。我一直安慰自己墙牌,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布暗甥。 她就那樣靜靜地躺著喜滨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪撤防。 梳的紋絲不亂的頭發(fā)上虽风,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天,我揣著相機(jī)與錄音寄月,去河邊找鬼辜膝。 笑死,一個胖子當(dāng)著我的面吹牛漾肮,可吹牛的內(nèi)容都是我干的厂抖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼验游,長吁一口氣:“原來是場噩夢啊……” “哼充岛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起耕蝉,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蒜魄,沒想到半個月后谈为,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伞鲫,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年儒搭,在試婚紗的時候發(fā)現(xiàn)自己被綠了吠架。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡搂鲫,死狀恐怖傍药,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情魂仍,我是刑警寧澤拐辽,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站蓄诽,受9級特大地震影響薛训,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仑氛,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一乙埃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧锯岖,春花似錦介袜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至捶牢,卻和暖如春鸠珠,著一層夾襖步出監(jiān)牢的瞬間巍耗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工渐排, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留炬太,地道東北人。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓驯耻,卻偏偏與公主長得像亲族,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子可缚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,500評論 2 359