原創:https://blog.csdn.net/ndzjx/article/details/89420873
在Apache上每一個進程在一個時刻只處理一個請求。而Nginx則不然,一個worker進程可以同時處理的請求數只受限於內存大小。
如果確認不會出現阻塞式調用,有多少CPU內核就應該配置多少個進程;如果有可能出現阻塞式調用,那麼需要配置稍多一些workder進程。
server_name與Host的匹配優先級如下:
1:完全匹配
2:選擇通配符在前面的server_name,如*.testweb.com
3:選擇通配符在後面的server_name,如www.testweb.*
4:選擇使用正則表達式才匹配的server_name,如~^\.testweb\.com$
location [=|~|~*|^~|@] uri {…}
1:= 完全匹配
2:~匹配URI時是大小寫敏感的
3:~* 忽略大小寫
4:^~ 前半部分與uri匹配即可
5:@用於內部請求之間的重定向。(帶@的location不直接處理用戶請求)
最後一個 location 中使用 / 作爲參數,它會匹配所有的HTTP請求。
HTTP請求中的keepalive功能是爲了讓多個請求複用一個HTTP長連接。
sendfile on|off;
發送文件,減少內核態與用戶態之間的兩次內存複製,從磁盤中讀取文件後直接在內核態發送到網卡設備,提高了發送文件的效率。
upstream塊定義了一個上游服務器的集羣,便於反向代理中的proxy_pass使用。
ip_hash; 希望一個用戶的請求始終落到固定的一臺上游服務器中。ip_hash與weight配置不可同時使用,upstream集羣中有一臺不可用,不能直接刪除,而是用down參數標識,確保轉發策略的一貫性。
默認情況下,反向代理不會轉發請求中的Host頭部,如果需要轉發,要加上配置:
proxy_set_header Host $host