Nginx配置優化解讀

2021-09-07 16:26:22 字數 4963 閱讀 7306

全域性配置

nginx的配置檔案是nginx的安裝目錄的conf/nginx .conf,nginx.conf配置檔案中,幾個全域性高階配置在模組部分之上。

user  www www; 

worker_processes auto; 

error_log  /data/log/www_logs/nginx_error.log  crit; 

pid  /usr/local/nginx/logs/nginx.pid; 

worker_rlimit_nofile  51200; 

user我們在centos7使用原始碼編譯安裝nginx時使用的是www使用者組,所以這裡將執行使用者user也設定為www。

worker_processes定義了啟動程序,通常設定成和cpu的數量相等。不能確定的時候,將其設定為可用的cpu核心數將是乙個好的開始(設定為「auto」將嘗試自動檢測它)。

error_log全域性錯誤日誌,只記錄嚴重的錯誤。

pid全域性pid檔案。

worker_rlimit_nofileworker程序的最大開啟檔案數限制。如果沒設定的話,這個值為作業系統的限制。設定後你的作業系統和nginx可以處理比「ulimit -a」更多的檔案,所以把這個值設高,這樣nginx就不會有「too many open files」問題了。

events模組

events模組包含工作模式及連線數上限的設定。

events 

use設定用於復用客戶端執行緒的輪詢方法。epoll是多路復用io(i/o multiplexing)中的一種方式,僅用於linux2.6以上核心,可以大大提高nginx的效能。

worker_connections設定可由乙個worker程序同時開啟的最大連線數(最大併發連線數)。如果設定了上面提到的worker_rlimit_nofile,我們可以將這個值設得很高。

multi_accept告訴nginx收到乙個新連線通知後接受盡可能多的連線,預設是on,設定為on後,多個worker按序列方式來處理連線,也就是乙個連線只有乙個worker被喚醒,其他的處於休眠狀態。

http模組

http模組控制著nginx http處理的所有核心特性。

include只是乙個在當前檔案中包含另乙個檔案內容的指令。這裡我們使用它來載入mime.type檔案定義了一系列的mime型別。

default_type預設**型別足夠。

client_header_buffer_size設定請求緩衝大小。

large_client_header_buffers設定請求緩衝大小。

client_max_body_size

tcp_nopush必須在sendfile開啟模式才有效,防止網路阻塞,積極的減少網路報文段的數量(將響應頭和正文的開始部分一起傳送,而不乙個接乙個的傳送)。

keepalive_timeout客戶端連線保持會話超時時間。單位秒,超過這個時間,伺服器斷開這個鏈結。

tcp_nodelay告訴nginx不要快取資料,而是一段一段的傳送--當需要及時傳送資料時,就應該給應用設定這個屬性,這樣傳送一小塊資料資訊時就不能立即得到返回值。

server_tokens並不會讓nginx執行的速度更快,設定為off時,在錯誤頁面中就不會顯示nginx版本號,這樣對於安全性是有好處的。

gzip配置

gzip可以設定http傳輸資料時使用gzip壓縮,從而可以減少頻寬流量,加快傳輸速度,有更好的體驗,也為我們節約成本。

gzip設定為on時,告訴nginx採用gzip壓縮的形式傳送資料,這將會減少傳送的資料量。

gzip_min_length設定對資料啟用壓縮的最少位元組數。如果乙個請求小於1000位元組,我們最好不要壓縮它,因為壓縮這些小的資料會降低處理此請求的所有程序的速度。

gzip_buffers壓縮緩衝區大小,表示申請4個單位為16k的記憶體作為壓縮結果流快取,預設值是申請與原始資料大小相同的記憶體空間來儲存gzip壓縮結果。

gzip_http_version壓縮版本,用於設定識別http協議版本,預設是1.1,目前大部分瀏覽器已經支援gzip解壓,使用預設即可

gzip_comp_level設定資料的壓縮等級。這個等級可以是1-9之間的任意數值,9是最慢但是壓縮比最大的。

gzip_types設定需要壓縮的資料格式。

gzip_vary和http頭有關係,加個vary頭,給**伺服器用的,有的瀏覽器支援壓縮,有的不支援,所以避免浪費不支援的也壓縮,所以根據客戶端的http頭來判斷,是否需要壓縮。

gzip_proxied啟用壓縮,如果http頭中包含:「expired no-cache no-store private auth」等頭資訊時就啟用壓縮。預設是off。

gzip_disable為指定的客戶端禁用gzip功能。我們設定成ie6或者更低版本以使我們的方案能夠廣泛相容。

fastcgi配置

在配置完成nginx+fastcgi之後,為了保證nginx下php環境的高速穩定執行,需要新增一些fastcgi優化指令。

fastcgi_connect_timeout 300; 

fastcgi_send_timeout 300; 

fastcgi_read_timeout 300; 

fastcgi_buffer_size 64k; 

fastcgi_buffers 4 64k; 

fastcgi_busy_buffers_size 128k; 

fastcgi_temp_file_write_size 256k; 

fastcgi_connect_timeout指定連線到後端fastcgi的超時時間。

fastcgi_send_timeout向fastcgi傳送請求的超時時間。

fastcgi_read_timeout指定接收fastcgi應答的超時時間。

fastcgi_buffer_size指定讀取fastcgi應答第一部分需要用多大的緩衝區,預設的緩衝區大小為fastcgi_buffers指令中的每塊大小,可以將這個值設定更小。

fastcgi_buffers指定本地需要用多少和多大的緩衝區來緩衝fastcgi的應答請求,如果乙個php指令碼所產生的頁面大小為256kb,那麼會分配4個64kb的緩衝區來快取,如果頁面大小大於256kb,那麼大於256kb的部分會快取到fastcgi_temp_path指定的路徑中,但是這並不是好方法,因為記憶體中的資料處理速度要快於磁碟。一般這個值應該為站點中php指令碼所產生的頁面大小的中間值,如果站點大部分指令碼所產生的頁面大小為256kb,那麼可以把這個值設定為「8 32k」、「4 64k」等。

fastcgi_busy_buffers_size建議設定為fastcgi_buffers的兩倍,繁忙時候的buffer。

fastcgi_temp_file_write_size在寫入fastcgi_temp_path時將用多大的資料塊,預設值是fastcgi_buffers的兩倍,該數值設定小時若負載上來時可能報502 bad gateway。

訪問日誌

log_format設定日誌記錄格式,如果pv很大的話建議直接用第三方統計。

access_log日誌檔案,設定為off時則關閉日誌記錄。

server模組

server模組屬於http模組的子模組,用於定義主機站點相關配置。

server 

location ~ .*\.(js|css)?$  } 

include vhost/*.conf; 

listen監聽埠為80。

server_name預設為_,即可以通過ip直接訪問。

index定義預設首頁。

root定義站點根目錄。

error_page定義錯誤頁面。

location正則匹配規則,上述配置中定義了快取30天,js和css檔案快取72小時。

其實,我們使用include包含多個含有server的配置檔案,從而可以方便的配置多個站點及虛擬主機。如上**最後一行include vhost/*.conf;,會載入vhost目錄下所有配置檔案,這樣新增和修改主機站點配置時只需修改對應的配置檔案了,方便維護。

配置好後,記得要過載nginx使配置生效。

/usr/local/nginx/sbin/nginx -s reload 

Nginx配置檔案解讀

nginx配置引數中文說明。定義nginx執行的使用者和使用者組 user local nginx程序數,建議設定為等於cpu總核心數。worker processes 8 全域性錯誤日誌定義型別,debug info notice warn error crit error log var log...

nginx 配置檔案解讀

參考 鏈結 在微服務的體系之下,nginx正在被越來越多的專案採用作為閘道器來使用,配合lua做限流 熔斷等控制 源自 nginx 指令碼語言,用標準c語言編寫並以源 形式開放,其設計目的是為了嵌入應用程式中,從而為應用程式提供靈活的擴充套件和定製功能。參考 鏈結 參考 鏈結lua 是乙個指令碼檔案...

nginx配置優化

worker processes指令控制工作程序數 worker processes 1 其預設值為1,這意味著nginx只執行乙個worker。該值應根據可用核心數,磁碟,網路子系統,伺服器負載等更改為最佳值。我們可以將值設定為可用的核心數。使用lscpu確定可用的核心數 lscpu archit...