nginx主配置文件解釋

Tengine 主配置文件前端

 

Tengine 安裝nginx

tar zxvf tengine-2.0.3.tar.gzapache

cd tengine-2.0.3/後端

./configure --prefix=/data/ops/app/tengine-2.0.3/ --with-http_stub_status_module --with-pcre --with-http_upstream_check_module瀏覽器

make && make install緩存

echo "/data/ops/app/tengine-2.0.3/sbin/nginx" >> /etc/rc.local服務器

 

部分模塊說明:app

--with-http_upstream_check_moduletcp

該模塊能夠爲Tengine提供主動式後端服務器健康檢查的功能。ide

該模塊在Tengine-1.4.0版本之前沒有默認開啓,它能夠在配置編譯選項的時候開啓:./configure --with-http_upstream_check_module

--with-pcre

設置PCRE庫的源碼路徑

 

 

2、nginx配置文件

配置文件分爲幾塊兒

nginx.conf 爲主配置文件

 

user root root;//設置worker進程的用戶名和組名root

worker_processes  auto;//根據cpu數量自動設定Tengine的worker進程數量

worker_rlimit_nofile 65535;//設置打開的文件句柄最大數量爲65535。這個參數跟系統的ulimit有關

 

events {

###若是你在./configure的時候指定了不止一個事件模型,你能夠經過這個參數告訴nginx你想使用哪個事件模型,默認狀況下nginx在編譯時會檢查最適合你係統的事件模型。

###你能夠在這裏看到全部可用的事件模型而且若是在./configure時激活它們。

        use epoll;    

        worker_connections  65535;

//設定事件模型使用epoll,每一個worker進程可用的最大鏈接數是65535
//爲何nginx比apache快,epoll起到了比較關鍵的做用。

}

 

http {

###文件擴展名與文件類型映射表

        include       mime.types;

###默認文件類型

        default_type  application/octet-stream;

#隱藏版本號

        server_tokens           off;

        server_info             off;

###這個參數指定了是否記錄客戶端的請求出現404錯誤的日誌,一般用於不存在的robots.txtfavicon.ico文件

        log_not_found           off;

 

        log_format      main    '$host$server_addr$server_port$remote_addr$time_iso8601$request_method$uri$args'

      '$server_protocol$status$body_bytes_sent$bytes_sent'

      '$request_time$http_referer$http_user_agent$http_x_forwarded_for'

      '$upstream_addr$upstream_status$upstream_response_time$upstream_cache_status';

 

        log_format      mainandpost     '$host$server_addr$server_port$remote_addr$time_iso8601$request_method$uri$args'

         '$request_body$server_protocol$status$body_bytes_sent$bytes_sent'

         '$request_time$http_referer$http_user_agent$http_x_forwarded_for'

         '$upstream_addr$upstream_status$upstream_response_time$upstream_cache_status';

 

        access_log logs/access-$year-$month-$day.log main;

        open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;

        sendfile        on;//打開會使用sendfile系統調用,用來發送靜態文件,節省了文件在用戶空間和內核空間拷貝的消耗。

        tcp_nopush      on;//打開後,會使TCP在發送數據時進行緩存,提升傳輸效率,可是會增長客戶端響應時間。

        request_time_cache off;

        req_status_zone req_status_zone "$host" 10M;//建立統計使用的共享內存。zone_name是共享內存的名稱,value用於定義key,支持變量。size是共享內存的大小。

 

        include proxy_cache_path.conf;

        include upstream.conf;

        include vhost.*.conf;

}

其餘例如upstreamvhost 等都經過include去引用

日誌格式分隔符通常用crtl+v+a做爲分隔符,這樣爲了之後方便對日誌做分析

'$host//「Host」請求頭的值,若是沒有該請求頭,則爲與請求對應的虛擬主機的首要主機名。

$server_addr//接受請求的服務器地址。 

爲計算這個值,一般須要進行一次系統調用。爲了不繫統調用,必須指定listen指令 的地址,而且使用bind參數。 

$server_port//接受請求的虛擬主機的端口。

$remote_addr//客戶端IP地址。

$time_iso8601//ISO8601標準格式下的本地時間

$request_method//HTTP方法,一般爲「GET」或者「POST」。

$uri//當前請求規範化之後的URI。 

變量$uri的值可能隨請求的處理過程而改變。 好比,當進行內部跳轉時,或者使用默認頁文件。 

$args//請求行中參數字符串 

'$request_body//請求正文。

$server_protocol//請求協議,一般爲「HTTP/1.0」或「HTTP/1.1」。

$status//響應狀態

$body_bytes_sent//發送給客戶端的字節數,不包括響應頭的大小

$bytes_sent//發送給客戶端的總字節數 

'$request_time//請求處理時間,單位爲秒,精度毫秒; 從讀入客戶端的第一個字節開始,直到把最後一個字符發送給客戶端後進行日誌寫入爲止。

$http_referer//記錄從哪一個頁面連接訪問過來的

$http_user_agent//記錄客戶端瀏覽器相關信息

$http_x_forwarded_for//記錄客戶端IP地址

$upstream_addr//保存服務器的IP地址和端口或者是UNIX域套接字的路徑

$upstream_status//保存服務器的響應代碼。 出現多個響應時,也是以逗號和冒號隔開。

$upstream_response_time//以毫秒的精度保留服務器的響應時間,(輸出)單位是秒。 出現多個響應時,也是以逗號和冒號隔開。

$upstream_cache_status//前端代理和後端服務器響應狀態

 

###若是須要修改從被代理服務器傳來的應答頭中的"Location""Refresh"字段,能夠用這個指令設置。

proxy_redirect off; 

###防止在客戶端本身終端請求的狀況下中斷代理請求。

proxy_ignore_client_abort  on;#禁止服務器主動拒絕客戶端

proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;

 

###容許從新定義或者添加發日後端服務器的請求頭。value能夠包含文本、變量或者它們的組合。 

###當且僅當當前配置級別中沒有定義proxy_set_header指令時,會從上面的級別繼承配置。 默認狀況下,只有兩個請求頭會被從新定義:

proxy_set_header Host $host:$server_port; #傳遞host+端口號給後端

###$remote_addr變量值添加在客戶端「X-Forwarded-For」請求頭的後面,並以逗號分隔。 

###若是客戶端請求未攜帶「X-Forwarded-For」請求頭,$proxy_add_x_forwarded_for變量值將與$remote_addr變量相同。

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

proxy_set_header X-Forwarded-Host $server_name; 

proxy_set_header X-Real-IP $remote_addr; #傳遞客戶端源地址

proxy_set_header Client-Real-IP $remote_addr; 

proxy_set_header                        Accept-Encoding '';#強制關閉後端gzip

###設置從被代理服務器讀取的第一部分應答的緩衝區大小。

###一般狀況下這部分應答中包含一個小的應答頭。

###默認狀況下這個值的大小爲指令proxy_buffers中指定的一個緩衝區的大小,不過能夠將其設置爲更小。

proxy_buffer_size       32k;

###設置用於讀取應答(來自被代理服務器)的緩衝區數目和大小,默認狀況也爲分頁大小,根據操做系統的不一樣多是4k或者8k

proxy_buffers           4 32k;

###當開啓緩衝響應的功能之後,在沒有讀到所有響應的狀況下,寫緩衝到達必定大小時,nginx必定會向客戶端發送響應,

###直到緩衝小於此值。這條指令用來設置此值。 同時,剩餘的緩衝區能夠用於接收響應,若是須要,一部份內容將緩衝到臨時文件。

###該大小默認是proxy_buffer_sizeproxy_buffers指令設置單塊緩衝大小的兩倍。

proxy_busy_buffers_size 64k;

###設置在寫入proxy_temp_path時數據的大小,在預防一個工做進程在傳遞文件時阻塞太長。

proxy_temp_file_write_size      64k;

 

client_max_body_size     100m;

proxy_http_version 1.1;

proxy_set_header Connection "";

 

 

語法

proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 | http_404 | off ...;

默認值

proxy_next_upstream error timeout;

上下文

http, server, location

指定在何種狀況下一個失敗的請求應該被髮送到下一臺後端服務器: 

error

和後端服務器創建鏈接時,或者向後端服務器發送請求時,或者從後端服務器接收響應頭時,出現錯誤;

timeout

和後端服務器創建鏈接時,或者向後端服務器發送請求時,或者從後端服務器接收響應頭時,出現超時;

invalid_header

後端服務器返回空響應或者非法響應頭;

http_500

後端服務器返回的響應狀態碼爲500

http_502

後端服務器返回的響應狀態碼爲502

http_503

後端服務器返回的響應狀態碼爲503

http_504

後端服務器返回的響應狀態碼爲504

http_404

後端服務器返回的響應狀態碼爲404

off

中止將請求發送給下一臺後端服務器。

須要理解一點的是,只有在沒有向客戶端發送任何數據之前,將請求轉給下一臺後端服務器纔是可行的。也就是說,若是在傳輸響應到客戶端時出現錯誤或者超時,這類錯誤是不可能恢復的。 

 

語法

proxy_buffer_size size;

默認值

proxy_buffer_size 4k|8k;

上下文

http, server, location

設置緩衝區的大小爲sizenginx從被代理的服務器讀取響應時,使用該緩衝區保存響應的開始部分。這部分一般包含着一個小小的響應頭。該緩衝區大小默認等於proxy_buffers指令設置的一塊緩衝區的大小,但它也能夠被設置得更小。 

語法

proxy_buffers number size;

默認值

proxy_buffers 8 4k|8k;

上下文

http, server, location

爲每一個鏈接設置緩衝區的數量爲number,每塊緩衝區的大小爲size。這些緩衝區用於保存從被代理的服務器讀取的響應。每塊緩衝區默認等於一個內存頁的大小。這個值是4K仍是8K,取決於平臺。 

語法

proxy_busy_buffers_size size;

默認值

proxy_busy_buffers_size 8k|16k;

上下文

http, server, location

當開啓緩衝響應的功能之後,在沒有讀到所有響應的狀況下,寫緩衝到達必定大小時,nginx必定會向客戶端發送響應,直到緩衝小於此值。這條指令用來設置此值。 同時,剩餘的緩衝區能夠用於接收響應,若是須要,一部份內容將緩衝到臨時文件。該大小默認是proxy_buffer_sizeproxy_buffers指令設置單塊緩衝大小的兩倍。 

語法

proxy_temp_file_write_size size;

默認值

proxy_temp_file_write_size 8k|16k;

上下文

http, server, location

在開啓緩衝後端服務器響應到臨時文件的功能後,設置nginx每次寫數據到臨時文件的size(大小)限制。 size的默認值是proxy_buffer_size指令和proxy_buffers指令定義的每塊緩衝區大小的兩倍, 而臨時文件最大容量由proxy_max_temp_file_size指令設置。 

 

$proxy_add_x_forwarded_for

$remote_addr變量值添加在客戶端「X-Forwarded-For」請求頭的後面,並以逗號分隔。 若是客戶端請求未攜帶「X-Forwarded-For」請求頭,$proxy_add_x_forwarded_for變量值將與$remote_addr變量相同。

相關文章
相關標籤/搜索