HTTP模塊控制着nginx http處理的所有核心特性 以下爲常用配置:
http{
include mime.types;
default_type application/octet-stream;
client_header_buffer_size 4k;
large_client_header_buffers 8 128k;
client_body_buffer_size 512k;
client_max_body_size 300m;
gzip on;
sendfile on;
#tcp_nopush on;
}
注: keepalive_timeout open_file_cache也可以配置在http模塊 與配置在event模塊相同 詳見http://blog.csdn.net/zhangsheng_1992/article/details/51689980
log_format日誌配置 負載均衡 反向代理等配置此處省略介紹 我將在介紹相應的模塊時詳細介紹 故此出省區部分配置
include mime.types;
default_type application/octet-stream;
#設定mime類型,類型由mime.type文件定義 該文件內定義指定文件頭所對應的文件格式 下面爲截取的部分文件內容
types {
text/html html htm shtml;
text/css css;
text/xml xml;
image/gif gif;
image/jpeg jpeg jpg;
application/javascript js;
application/atom+xml atom;
........
如果你需要新增自定義的文件類型 可以在此文件內定義
client_header_buffer_size 4k;
客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過1k,常見系統分頁大小一般爲4k 你可以通過下列命令查詢:
[xxxx ~]# 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;
sendfile指令指定 nginx 是否調用sendfile 函數(zero copy 方式)來輸出文件,對於普通應用,必須設爲on。如果用來進行下載等應用磁盤IO重負載應用,可設置爲off,以平衡磁盤與網絡IO處理速度,降低系統負載
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或者更高的應答。