1. 程式人生 > >nginx配置詳解之http模組

nginx配置詳解之http模組

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;
}

     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或者更高的應答。

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

相關推薦

nginx配置http模組

HTTP模組控制著nginx http處理的所有核心特性 以下為常用配置: http{ include mime.types; default_type application/octet-stream; client_header_buffer_

nginx配置location模組

       在前幾篇博文中我提到過的 nginx除了是一款的web伺服器外  nginx還是一個小型的反向代理伺服器  我們可以使用nginx將一些靜態檔案 例如css js images 儲存在客戶端本地  下次請求的時候直接從本地讀取 加快頁面響應速度 又比如 我們可

nginx配置main模組

nginx常用全域性配置如下: user nginx; worker_processes = 1; error_log /var/log/nginx/error.log; worker_rlimit_nofile 20000; pid /var/run/ng

Nginx深入過濾模組

一、模組簡介     過濾(filter)模組是過濾響應頭和內容的模組,可以對回覆的頭和內容進行處理。它的處理時間在獲取回覆內容之後,向用戶傳送響應之前。它的處理過程分為兩個階段,過濾HTTP回覆和頭部和主體,在這兩個階段可以分別對頭部和主體進行修改。下面函式就是分別對頭部和

Nginx得Location配置精準匹配

location的匹配過程一、location 的定義 location 有“定位”的意思,根據Uri來進行不同的定位。 在虛擬主機的配置中,是必不可少得,location可以把網站的不同部分,定位到不同的處理方式上。二、location 的語法 location [

Nginx深入模組化體系結構

在開始嘮叨之前,先簡單介紹下配置系統,因為之後的東東會與這個有一定的關係。 一、配置系統     Nginx的配置系統由一個主配置檔案和一些輔助配置檔案構成,這些配置檔案預設在/etc/nginx/目錄下。     輔助配置檔案只在某些特定情況下才

Nginx配置

set 文件結構 時也 解決方案 ces 反向代理服務器 use 力量 第三方模塊 最近在搞nginx和tomcat 以及apache的集群。下面是參考的一片很不錯的關於nginx配置的詳細講解: http://www.cnblogs.com/knowledgesea/p/

Web.xml配置context-param

ltr 完成 數據庫 數據 鍵值對 art str htm 方法 轉自:http://blog.csdn.net/liaoxiaohua1981/article/details/6759206 格式定義: [html] view plaincopy

[轉]Nginx配置

fast forward type 時間 去除 負載 所有 hash dex Nginx是lgor Sysoev為俄羅斯訪問量第二的rambler.ru站點設計開發的。從2004年發布至今,憑借開源的力量,已經接近成熟與完善。 Nginx功能豐富,可作為HTTP服務器,也可

webpack4配置慢嚼細嚥

前言   經常會有群友問起webpack、react、redux、甚至create-react-app配置等等方面的問題,有些是我也不懂的,慢慢從大家的相互交流中,也學到了不少。 ​  今天就嘗試著一起來聊聊Webpack吧,旨在幫大家加深理解、新手更容易上路,都能從0到1搭建配置自定屬於自己的腳手架,或

最實用的Nginx配置

好記憶不如爛筆頭,能記下點東西,就記下點,有時間拿出來看看,也會發覺不一樣的感受。 Nginx是一個非常實用的高效能的HTTP和反向代理伺服器,今天小編針對Nginx的配置檔案(nginx.conf)進行詳細的介紹,方便各位感興趣的朋友更便捷,更愉快的使用Nginx,配置如下:(文章末尾有示例

webpack4配置新手上路初探

前言   經常會有群友問起webpack、react、redux、甚至create-react-app配置等等方面的問題,有些是我也不懂的,慢慢從大家的相互交流中,也學到了不少。 ​  今天就嘗試著一起來聊聊Webpack吧,旨在幫大家加深理解、新手更容易上路,都能從0到1搭建配置自定屬於自己的腳手架

webpack4配置常用外掛分享

  前言    繼上一次webpack的基礎配置分享之後,本次將分享一些工作中專案常用的配置外掛、也會包含一些自己瞭解過覺得不錯的外掛,如有分析不到位的,歡迎糾錯,嗯,這些東西文件都有,大佬可繞過。    Wepack4之後廢棄了很多的外掛,這裡只會講解webpack4還支援的(包含4之前外掛),已經廢棄的將

webpack4配置常用插件分享

dom turn false 所想 感謝 建議 tro isp 提取   前言    繼上一次webpack的基礎配置分享之後,本次將分享一些工作中項目常用的配置插件、也會包含一些自己了解過覺得不錯的插件,如有分析不到位的,歡迎糾錯,嗯,這些東西文檔都有,大佬可繞過。   

Nginx深入多程序網路模型

一、程序模型         Nginx之所以為廣大碼農喜愛,除了其高效能外,還有其優雅的系統架構。與Memcached的經典多執行緒模型相比,Nginx是經典的多程序模型。Nginx啟動後以daemon的方式在後臺執行,後臺程序包含一個m

Web.xml配置context-param,listener

 格式定義: [html]  view plain copy <c

深入淺出Mybatis原始碼系列(三)---配置properties與environments(mybatis原始碼篇)

上篇文章《深入淺出Mybatis原始碼系列(二)---配置簡介(mybatis原始碼篇)》我們通過對mybatis原始碼的簡單分析,可看出,在mybatis配置檔案中,在configuration根節點下面,可配置properties、typeAliases、plugins、

ELK日誌監控分析系統Logstash——output模組

摘要: Logstash的output模組,相比於input模組來說是一個輸出模組,output模組集成了大量的輸出外掛,可以輸出到指定檔案,也可輸出到指定的網路埠,當然也可以輸出資料到ES.在這裡我只介紹如何輸出到ES,至於如何輸出到埠和指定檔案,有很多的文件資料可查詢. Logs

ELK日誌監控分析系統Logstash——input模組

摘要: Logstash由三個元件構造成,分別是input、filter以及output。我們可以吧Logstash三個元件的工作流理解為:input收集資料,filter處理資料,output輸出資料。至於怎麼收集、去哪收集、怎麼處理、處理什麼、怎麼發生以及傳送到哪等等一些列的問題就是我

ELK日誌監控分析系統Logstash——filter模組

摘要: Logstash三個元件的第二個元件,也是真個Logstash工具中最複雜,最蛋疼的一個元件,當然,也是最有作用的一個元件。 1、grok外掛 grok外掛有非常強大的功能,他能匹配一切資料,但是他的效能和對資源的損耗同樣讓人詬病。 Logstash三個元件的第二個元件,也是