nginx配置詳解之http模組

2021-07-13 15:21:25 字數 2733 閱讀 7755

http模組控制著nginx http處理的所有核心特性 以下為常用配置:

注: keepalive_timeout open_file_cache也可以配置在http模組 與配置在event模組相同  詳見

log_format日誌配置 負載均衡  反向**等配置此處省略介紹 我將在介紹相應的模組時詳細介紹  故此出省區部分配置

include mime.types;

#設定mime型別,型別由mime.type檔案定義 該檔案內定義指定檔案頭所對應的檔案格式 下面為擷取的部分檔案內容

如果你需要新增自定義的檔案型別  可以在此檔案內定義

client_header_buffer_size 4k;

客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設定,一般乙個請求的頭部大小不會超過1k,常見系統分頁大小一般為4k 你可以通過下列命令查詢:

[***x ~]# getconf pagesize

4096

large_client_header_buffers 8 128k;

客戶請求頭緩衝大小 nginx,缺省會用client_header_buffer_size設定的buffer值來讀取header值,如果header過大,它會使用large_client_header_buffers設定的值來讀取

對於nginx處理請求,先處理請求的request_line,之後才是request_header,兩者的buffer分配策略相同,先根據client_header_buffer_size配置的值分配乙個buffer,如果分配的buffer

無法容納 request_line/request_header,那麼就會再次根據large_client_header_buffers配置的引數分配large_buffer,如果large_buffer還是無法容納,對於request_line過大

nginx會返回414錯誤 request uri too large  對於request_header過大,如請求的http頭/cookie過大 則會出現nginx 400 bad request 的錯誤注:request請求包的起始為請求行(request-line)

使用場景:

1.如果你的請求中的header都很大,那麼應該使用client_header_buffer_size,這樣能減少一次記憶體分配。如果你的請求中只有少量請求header很大,那麼應該使用

2.large_client_header_buffers,因為這樣就僅需在處理大header時才會分配更多的空間,從而減少無謂的記憶體空間浪費。

client_body_buffer_size 512k;

同上面的client_header_buffer_size不過處理的是訊息體 body

client_max_body_size 300m;

同上面的large_client_header_buffers如果你的應用請求body過大 如大檔案上傳 如果這裡設定不夠 將會出現 nginx 413 request entity too large

以上四個引數可以配置在main模組對全域性起作用 也可以單獨配置在http模組內或者server模組內  由於習慣配置於http模組內 所以我在此處講解

gzip on;

gzip壓縮功能可以節省頻寬,但是會增加伺服器cpu的開銷,nginx預設只對text/html進行壓縮,如果要對html之外的內容進行壓縮傳輸,需要手動配置

這個配置對整體效能提公升有很大幫助 我將在另一篇博文中詳細介紹

sendfile on;

tcp_nopush on;

此選項允許或禁止使用socket的tcp_cork的選項,此選項僅在使用sendfile的時候使用,預設為on

tcp_nodelay on;

這裡tcp_nodelay就是nagle啟用與否的開關,所以上面的指令的效果就是禁用nagle演算法,也即不快取資料,預設為off 設定為on 即表示禁用nagle 演算法

proxy_intercept_errors on;

表示使nginx阻止http應答**為400或者更高的應答。

關於nagle演算法  sendfile  tcp_nopush  tcp_nodelay我將在介紹完所有配置項後 詳細介紹 以後會附上傳送門

nginx配置詳解之events模組

events模組中包含nginx中所有處理連線的設定.常用配置項如下 events accept mutex on 設定網路連線序列化,防止驚群現象發生,預設為on multi accept on 設定乙個程序是否同時接受多個網路連線,預設為off use epoll 事件驅動模型,select p...

Nginx配置詳解

nginx的主要配置檔案是nginx.conf,位於安裝目錄下的nginx conf資料夾裡,主要的配置引數如下 定義nginx執行的使用者和使用者組 user nobody nobody nginx程序數,建議設定為等於cpu總核心數。worker processes 8 全域性錯誤日誌定義型別,...

nginx配置詳解

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