nginx處理http請求實現(xiàn)過程解析
nginx首先決定要用配置文件里的哪個server{}塊來處理,假設(shè)有下面的server{}配置
server {
listen 80;
server_name aaa;
...
}
server {
listen 80;
server_name bbb;
...
}
nginx會根據(jù)過來的http請求頭里的Host字段里的值,來判斷使用哪個server{}。
如果請求頭里沒有Host字段,或者Host字段里的值,和Nginx配置文件里的server{}里的{server_name}都不匹配,則使用第一個server{},來處理這個請求。
如果請求頭里的Host字段里的值和Nginx配置文件里的某個server{}里的{server_name},匹配上了,則使用這個server{},來處理這個請求。
可以使用curl工具來方便的做實驗,curl可以設(shè)置http請求的請求頭,所以可以任意設(shè)置Host字段,用【-H】來設(shè)置。下面的10.210.65.73是安裝了nginx的機器的IP地址。
所以用下面的命令,發(fā)送了http請求后,nginx就會使用server{server_name aaa}來處理這個請求。
curl.exe -H "Host: aaa" 10.210.65.73
非常重要的結(jié)論:server_name對應(yīng)的是http請求頭里的Host字段的值,有了上面的理論支撐,就可以很容易的設(shè)置反向代理和負載均衡:
當(dāng)過來的http請求頭里的Host字段為aaa時,storage.test來處理。
當(dāng)過來的http請求頭里的Host字段為bbb時,tracker.test來處理。
#負載均衡配置,IP為129的機器配置高,所以給他的數(shù)字的27,就是讓它多處理
upstream storage.test {
server 10.210.65.129:80 weight=27;
server 10.210.65.130:80 weight=1;
}
#負載均衡配置
upstream tracker.test {
server 10.210.65.52:80 weight=7;
server 10.210.65.53:80 weight=2;
}
#文件的存儲
server {
listen 80;
server_name aaa;
location / {
#http:://后面的內(nèi)容是自己定義,對應(yīng)上面upstream的名字
proxy_pass http://storage.test;
}
}
#文件服務(wù)器tracker
server {
listen 80;
server_name bbb;
location / {
#http:://后面的內(nèi)容是自己定義的,對應(yīng)上面upstream的名字
proxy_pass http://tracker.test;
}
}
server{}里的listen監(jiān)聽的是誰的端口?
監(jiān)聽的是:發(fā)送過來http請求的進程(大部分是瀏覽器)的端口(如果是http請求,則為端口為80),不是nginx服務(wù)器自己進程的端口。
nginx根據(jù)http請求頭的Host字段里的值,和發(fā)送過來http請求的進程(大部分是瀏覽器)的端口,來決定使用哪個server{}來處理http請求。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Prometheus 抓取 nginx 訪問日志的指標(biāo)
通過結(jié)合NGINX Exporter, Fluentd, Prometheus和Grafana, 可有效監(jiān)控并可視化NGINX中的4xx和5xx狀態(tài)碼日志,首先使用Fluentd收集和解析NGINX日志,再通過Prometheus抓取Fluentd暴露的指標(biāo),本文介紹Prometheus抓取nginx訪問日志的指標(biāo),感興趣的朋友一起看看吧2024-10-10
解決Nginx網(wǎng)關(guān)超時出現(xiàn)504 GATEWAY TIMEOUT的問題
這篇文章主要給大家介紹了如何解決Nginx網(wǎng)關(guān)超時出現(xiàn)504 GATEWAY TIMEOUT的問題,文章通過代碼示例和圖文結(jié)合介紹的非常詳細,有遇到相同問題的朋友可以參考閱讀本文2023-11-11
Nginx + php 搭建 超性能 WEB 服務(wù)器
Nginx ("engine x") 是一個高性能的 HTTP 和反向代理服務(wù)器,也是一個 IMAP/POP3/SMTP 代理服務(wù)器。2010-03-03

