nginx處理http請(qǐng)求實(shí)現(xiàn)過(guò)程解析
nginx首先決定要用配置文件里的哪個(gè)server{}塊來(lái)處理,假設(shè)有下面的server{}配置
server {
listen 80;
server_name aaa;
...
}
server {
listen 80;
server_name bbb;
...
}
nginx會(huì)根據(jù)過(guò)來(lái)的http請(qǐng)求頭里的Host字段里的值,來(lái)判斷使用哪個(gè)server{}。
如果請(qǐng)求頭里沒(méi)有Host字段,或者Host字段里的值,和Nginx配置文件里的server{}里的{server_name}都不匹配,則使用第一個(gè)server{},來(lái)處理這個(gè)請(qǐng)求。
如果請(qǐng)求頭里的Host字段里的值和Nginx配置文件里的某個(gè)server{}里的{server_name},匹配上了,則使用這個(gè)server{},來(lái)處理這個(gè)請(qǐng)求。
可以使用curl工具來(lái)方便的做實(shí)驗(yàn),curl可以設(shè)置http請(qǐng)求的請(qǐng)求頭,所以可以任意設(shè)置Host字段,用【-H】來(lái)設(shè)置。下面的10.210.65.73是安裝了nginx的機(jī)器的IP地址。
所以用下面的命令,發(fā)送了http請(qǐng)求后,nginx就會(huì)使用server{server_name aaa}來(lái)處理這個(gè)請(qǐng)求。
curl.exe -H "Host: aaa" 10.210.65.73
非常重要的結(jié)論:server_name對(duì)應(yīng)的是http請(qǐng)求頭里的Host字段的值,有了上面的理論支撐,就可以很容易的設(shè)置反向代理和負(fù)載均衡:
當(dāng)過(guò)來(lái)的http請(qǐng)求頭里的Host字段為aaa時(shí),storage.test來(lái)處理。
當(dāng)過(guò)來(lái)的http請(qǐng)求頭里的Host字段為bbb時(shí),tracker.test來(lái)處理。
#負(fù)載均衡配置,IP為129的機(jī)器配置高,所以給他的數(shù)字的27,就是讓它多處理
upstream storage.test {
server 10.210.65.129:80 weight=27;
server 10.210.65.130:80 weight=1;
}
#負(fù)載均衡配置
upstream tracker.test {
server 10.210.65.52:80 weight=7;
server 10.210.65.53:80 weight=2;
}
#文件的存儲(chǔ)
server {
listen 80;
server_name aaa;
location / {
#http:://后面的內(nèi)容是自己定義,對(duì)應(yīng)上面upstream的名字
proxy_pass http://storage.test;
}
}
#文件服務(wù)器tracker
server {
listen 80;
server_name bbb;
location / {
#http:://后面的內(nèi)容是自己定義的,對(duì)應(yīng)上面upstream的名字
proxy_pass http://tracker.test;
}
}
server{}里的listen監(jiān)聽(tīng)的是誰(shuí)的端口?
監(jiān)聽(tīng)的是:發(fā)送過(guò)來(lái)http請(qǐng)求的進(jìn)程(大部分是瀏覽器)的端口(如果是http請(qǐng)求,則為端口為80),不是nginx服務(wù)器自己進(jìn)程的端口。
nginx根據(jù)http請(qǐng)求頭的Host字段里的值,和發(fā)送過(guò)來(lái)http請(qǐng)求的進(jìn)程(大部分是瀏覽器)的端口,來(lái)決定使用哪個(gè)server{}來(lái)處理http請(qǐng)求。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- nginx對(duì)http請(qǐng)求處理的各個(gè)階段詳析
- Nginx實(shí)現(xiàn)https網(wǎng)站配置代碼實(shí)例
- nginx配置https加密訪問(wèn)的詳細(xì)教程
- Nginx域名轉(zhuǎn)發(fā)https訪問(wèn)的實(shí)現(xiàn)
- 阿里云Nginx配置https實(shí)現(xiàn)域名訪問(wèn)項(xiàng)目(圖文教程)
- Nginx配置同一個(gè)域名同時(shí)支持http與https兩種方式訪問(wèn)實(shí)現(xiàn)
- Nginx同時(shí)支持Http和Https的配置詳解
- 使用nginx+二級(jí)域名+https支持
相關(guān)文章
nginx訪問(wèn)報(bào)403錯(cuò)誤的幾種情況詳解
最近訪問(wèn)新安裝的nginx,發(fā)現(xiàn)報(bào)403錯(cuò)誤,所以這篇文章主要給大家介紹了關(guān)于nginx訪問(wèn)報(bào)403錯(cuò)誤的幾種情況,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
nginx外網(wǎng)訪問(wèn)內(nèi)網(wǎng)站點(diǎn)配置操作
這篇文章主要介紹了nginx外網(wǎng)訪問(wèn)內(nèi)網(wǎng)站點(diǎn)配置操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
Nginx中反向代理+負(fù)載均衡+服務(wù)器宕機(jī)解決辦法詳解
這篇文章主要介紹了Nginx中反向代理+負(fù)載均衡+服務(wù)器宕機(jī)解決辦法詳解,反向代理保證系統(tǒng)安全,不暴露服務(wù)器IP,利用nginx服務(wù)器,利用內(nèi)網(wǎng)ip進(jìn)行訪問(wèn),避免出現(xiàn)攻擊服務(wù)器的情況,需要的朋友可以參考下2024-01-01
通過(guò)nginx實(shí)現(xiàn)訪問(wèn)服務(wù)器指定目錄下圖片資源
這篇文章為大家詳細(xì)主要介紹了如何通過(guò)nginx實(shí)現(xiàn)訪問(wèn)服務(wù)器指定目錄下圖片資源,文中通過(guò)圖文進(jìn)行了詳細(xì)的講解,有需要的小伙伴可以了解下2023-10-10
nginx的location配置導(dǎo)致網(wǎng)關(guān)返回404問(wèn)題
這篇文章主要介紹了nginx的location配置導(dǎo)致網(wǎng)關(guān)返回404問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
Nginx防止直接用IP訪問(wèn)Web服務(wù)器的設(shè)置方法
看了很多Nginx的配置,好像都忽略了ip直接訪問(wèn)Web的問(wèn)題,這樣理論上不利于SEO優(yōu)化,所以我們希望可以避免直接用IP訪問(wèn)網(wǎng)站,而是域名訪問(wèn),具體怎么做呢,看下面2012-09-09
Nginx之為已安裝nginx動(dòng)態(tài)添加模塊的方法
本篇文章主要介紹了Nginx之為已安裝nginx動(dòng)態(tài)添加模塊的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
filebeat收集多個(gè)域名網(wǎng)站日志并存儲(chǔ)到不同es索引庫(kù)過(guò)程
這篇文章主要為大家介紹了filebeat收集多個(gè)域名網(wǎng)站日志并存儲(chǔ)到不同es索引庫(kù)過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
nginx用正則表達(dá)式實(shí)現(xiàn)泛域名自動(dòng)匹配目錄的方法
這篇文章主要介紹了nginx用正則表達(dá)式實(shí)現(xiàn)泛域名自動(dòng)匹配目錄的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05

