nginx是怎麼處理http請求的html
參考:How nginx processes a requestnginx
nginx first decides which server should process the request. Let’s start with a simple configuration where all three virtual servers listen on port *:80:c++
nginx首先決定要用配置文件裏的哪一個server{}塊來處理,假設有下面的server{}配置瀏覽器
server { listen 80; server_name aaa; ... } server { listen 80; server_name bbb; ... }
可使用curl工具來方便的作實驗,curl能夠設置http請求的請求頭,因此能夠任意設置Host字段,用【-H】來設置。下面的10.210.65.73是安裝了nginx的機器的IP地址。服務器
因此用下面的命令,發送了http請求後,nginx就會使用server{server_name aaa}來處理這個請求。微信
curl.exe -H "Host: aaa" 10.210.65.73
#負載均衡配置,IP爲129的機器配置高,因此給他的數字的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:://後面的內容是本身定義,對應上面upstream的名字 proxy_pass http://storage.test; } } #文件服務器tracker server { listen 80; server_name bbb; location / { #http:://後面的內容是本身定義的,對應上面upstream的名字 proxy_pass http://tracker.test; } }
##<font color=red>server{}裏的listen監聽的是誰的端口? 監聽的是:發送過來http請求的進程(大部分是瀏覽器)的端口(若是是http請求,則爲端口爲80),不是nginx服務器本身進程的端口。 nginx根據http請求頭的Host字段裏的值,和發送過來http請求的進程(大部分是瀏覽器)的端口,來決定使用哪一個server{}來處理http請求。 </font>負載均衡
<font color="green">curl
</font>ide