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.txt和favicon.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;
}
其餘例如upstream,vhost 等都經過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_size和proxy_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 |
設置緩衝區的大小爲size。nginx從被代理的服務器讀取響應時,使用該緩衝區保存響應的開始部分。這部分一般包含着一個小小的響應頭。該緩衝區大小默認等於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_size和proxy_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變量相同。