Nginx基本配置

2021-07-16 08:25:35 字數 4134 閱讀 3026

基本的 (優化過的)配置

我們將修改的唯一檔案是nginx.conf,其中包含nginx不同模組的所有設定。你應該能夠在伺服器的/etc/nginx目錄中找到nginx.conf。首先,我們將談論一些全域性設定,然後按檔案中的模組挨個來,談一下哪些設定能夠讓你在大量客戶端訪問時擁有良好的效能,為什麼它們會提高效能。本文的結尾有乙個完整的配置檔案。

高層的配置

nginx.conf檔案中,nginx中有少數的幾個高階配置在模組部分之上。

userpid應該按預設設定 – 我們不會更改這些內容,因為更改與否沒有什麼不同。

worker_processes定義了nginx對外提供web服務時的worder程序數。最優值取決於許多因素,包括(但不限於)cpu核的數量、儲存資料的硬碟數量及負載模式。不能確定的時候,將其設定為可用的cpu核心數將是乙個好的開始(設定為「auto」將嘗試自動檢測它)。

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

events模組

events模組中包含nginx中所有處理連線的設定。

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

記住,最大客戶數也由系統的可用socket連線數限制(~ 64k),所以設定不切實際的高沒什麼好處。

multi_accept告訴nginx收到乙個新連線通知後接受盡可能多的連線。

(值得注意的是如果你不知道nginx該使用哪種輪詢方法的話,它會選擇乙個最適合你作業系統的)。

http 模組

http模組控制著nginx http處理的所有核心特性。因為這裡只有很少的配置,所以我們只節選配置的一小部分。所有這些設定都應該在http模組中,甚至你不會特別的注意到這段設定。

server_tokens並不會讓nginx執行的速度更快,但它可以關閉在錯誤頁面中的nginx版本數字,這樣對於安全性是有好處的。

sendfile可以讓sendfile()發揮作用。sendfile()可以在磁碟和tcp socket之間互相拷貝資料(或任意兩個檔案描述符)。pre-sendfile是傳送資料之前在使用者空間申請資料緩衝區。之後用read()將資料從檔案拷貝到這個緩衝區,write()將緩衝區資料寫入網路。sendfile()是立即將資料從磁碟讀到os快取。因為這種拷貝是在核心完成的,sendfile()要比組合read()和write()以及開啟關閉丟棄緩衝更加有效(更多有關於sendfile)

tcp_nopush告訴nginx在乙個資料報裡傳送所有標頭檔案,而不乙個接乙個的傳送

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

access_log設定nginx是否將儲存訪問日誌。關閉這個選項可以讓讀取磁碟io操作更快(aka,yolo)。

error_log告訴nginx只能記錄嚴重的錯誤。

keepalive_timeout給客戶端分配keep-alive鏈結超時時間。伺服器將在這個超時時間過後關閉鏈結。我們將它設定低些可以讓ngnix持續工作的時間更長。

client_header_timeoutclient_body_timeout設定請求頭和請求體(各自)的超時時間。我們也可以把這個設定低些。

reset_timeout_connection告訴nginx關閉不響應的客戶端連線。這將會釋放那個客戶端所占有的記憶體空間。

send_timeout指定客戶端的響應超時時間。這個設定不會用於整個**器,而是在兩次客戶端讀取操作之間。如果在這段時間內,客戶端沒有讀取任何資料,nginx就會關閉連線。

limit_conn為給定的key設定最大連線數。這裡key是addr,我們設定的值是100,也就是說我們允許每乙個ip位址最多同時開啟有100個連線。

limit_conn_zone設定用於儲存各種key(比如當前連線數)的共享記憶體的引數。5m就是5兆位元組,這個值應該被設定的足夠大以儲存(32k*5)32byte狀態或者(16k*5)64byte狀態。

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

default_type設定檔案使用的預設的mime-type。

charset設定我們的標頭檔案中的預設的字符集。

以下兩點對於效能的提公升在偉大的webmasters stackexchange中有解釋。

gzip是告訴nginx採用gzip壓縮的形式傳送資料。這將會減少我們傳送的資料量。

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

gzip_static告訴nginx在壓縮資源之前,先查詢是否有預先gzip處理過的資源。這要求你預先壓縮你的檔案(在這個例子中被注釋掉了),從而允許你使用最高壓縮比,這樣nginx就不用再壓縮這些檔案了(想要更詳盡的gzip_static的資訊,這裡)。

gzip_proxied允許或者禁止壓縮基於請求和響應的響應流。我們設定為any,意味著將會壓縮所有的請求。

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

gzip_comp_level設定資料的壓縮等級。這個等級可以是1-9之間的任意數值,9是最慢但是壓縮比最大的。我們設定為4,這是乙個比較折中的設定。

gzip_type設定需要壓縮的資料格式。上面例子中已經有一些了,你也可以再新增更多的格式。

open_file_cache開啟快取的同時也指定了快取最大數目,以及快取的時間。我們可以設定乙個相對高的最大時間,這樣我們可以在它們不活動超過20秒後清除掉。

open_file_cache_valid在open_file_cache中指定檢測正確資訊的間隔時間。

open_file_cache_min_uses定義了open_file_cache中指令引數不活動時間期間裡最小的檔案數。

open_file_cache_errors指定了當搜尋乙個檔案時是否快取錯誤資訊,也包括再次給配置中新增檔案。我們也包括了伺服器模組,這些是在不同檔案中定義的。如果你的伺服器模組不在這些位置,你就得修改這一行來指定正確的位置。

乙個完整的配置

編輯完配置後,確認重啟nginx使設定生效。

nginx基本配置

linux 配置 nginx 基本 1.首先安裝編輯器 因為nginx 是c 語言編寫的 yum y install make zlib zlib devel gcc c libtool openssl openssl devel 2 安裝pcre pcre 重要是讓linux 支援 rw 功能 解...

nginx 基本配置

user nobody worker processes 1 子程序,nginx啟動會有1個master程序和若干個子程序 error log logs error.log debug info notice warn error crit 日誌級別 這樣,當使用者請求 位址時,nginx 就會自動...

Nginx 基本配置

nginx執行時至少載入幾個核心模組和乙個事件類模組 按功能分類 除錯 定位問題的配置 正常執行必備配置 優化效能配置 事件類配置 有些事件類配置歸入優化類,雖為events 但作用為優化效能 除錯 定位問題配置 1.守護程序方式執行nginx daemon on off 預設on daemon 守...