#定義Nginx運行的用戶和用戶組
user nginx nginx;
#nginx進程數,建議設置爲等於CPU總核心數
worker_processes 1;
#全局錯誤日誌定義類型,[ debug | info | notice | warn | error | crit ]
error_log logs /error .log info;
#進程文件
pid run /nginx/nginx .pid;
#一個nginx進程打開的最多文件描述符數目,理論值應該是最多打開文件數(系統的值ulimit -n)與nginx進程數相除,但是nginx分配請求並不均勻,所以建議與ulimit -n的值保持一致。
worker_rlimit_nofile 65535;
#工作模式與連接數上限
events {
#use epoll;
#參考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];
epoll模型是Linux 2.6以上版本內核中的高性能網絡I /O 模型,如果跑在FreeBSD上面,就
用kqueue模型。window下不指定。
補充說明:
與apache相類,nginx針對不同的操作系統,有不同的事件模型。
A)標準事件模型
Select、poll屬於標準事件模型,如果當前系統不存在更有效的方法,nginx會選擇 select 或poll
B)高效事件模型
Kqueue:使用於FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用雙處理器的MacOS X系統使用kqueue可能會造成內核崩潰。
Epoll:使用於Linux內核2.6版本及以後的系統。
/dev/poll :使用於Solaris 7 11 /99 +,HP /UX 11.22+ (eventport),IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。
Eventport:使用於Solaris 10。 爲了防止出現內核崩潰的問題, 有必要安裝安全補丁。
#單個進程最大連接數(最大連接數=連接數*進程數)
worker_connections 4000;
}
#設定http服務器
http {
#隱藏Nginx版本信息
server_tokens off;
include mime.types; #文件擴展名與文件類型映射表
default_type application /octet-stream ; #默認文件類型
#charset utf-8; #默認編碼
server_names_hash_bucket_size 128; #服務器名字的hash表大小
client_header_buffer_size 32k; #上傳文件大小限制
#access默認原先日誌格式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
autoindex off; #開啓目錄列表訪問設置爲on,合適下載服務器,默認關閉。
#日誌格式定義爲如下
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
'$upstream_addr $upstream_response_time $request_time ' ;
log_format log404 '$status [$time_local] $remote_addr $host$request_uri $sent_http_location' ;
日誌格式設置說明:
$remote_addr與$http_x_forwarded_for用以記錄客戶端的ip地址;
$remote_user:用來記錄客戶端用戶名稱;
$time_local: 用來記錄訪問時間與時區;
$request: 用來記錄請求的url與http協議;
$status: 用來記錄請求狀態;成功是200,
$body_bytes_sent :記錄發送給客戶端文件主體內容大小;
$http_referer:用來記錄從那個頁面鏈接訪問過來的;
$http_user_agent:記錄客戶瀏覽器的相關信息;
通常web服務器放在反向代理的後面,這樣就不能獲取到客戶的IP地址了,通過$remote_add拿
到的IP地址是反向代理服務器的iP地址。反向代理服務器在轉發請求的http頭信息中,可以
增加x_forwarded_for信息,用以記錄原有客戶端的IP地址和原來客戶端的請求的服務器地址。
access_log logs /nginx/access .log main;
access_log logs /host .access.404.log log404;
用了log_format指令設置了日誌格式之後,需要用access_log指令指定日誌文件的存放路徑;
sendfile on; #開啓高效文件傳輸模式,sendfile指令指定nginx是否調用sendfile函數
來輸出文件,對於普通應用設爲 on,如果用來進行下載等應用磁盤IO重負載應用,可設置
爲off,以平衡磁盤與網絡I /O 處理速度,降低系統的負載。注意:如果圖片顯示不正常把這
個改 成off。
#tcp_nopush on; #防止網絡阻塞
#tcp_nodelay on; #防止網絡阻塞
keepalive_timeout 65; ##給客戶端分配keep-alive鏈接超時時間。服務器將在這個超時時間過後關閉鏈接。我們將它設置低些可以讓ngnix持續工作
的時間更長,單位是秒
client_header_timeout 10;
client_body_timeout 10; #設置客戶端讀請求的超時時間,默認是60s
reset_timedout_connection on; #在客戶端停止響應之後,允許nginx服務器關閉連接,釋放socket關聯的內存
send_timeout 10; # 設置客戶端的響應超時時間.如果客戶端停止讀取數據,在這麼多時間之後就釋放過期的客戶端連接,默認是60s
client_header_timeout 和client_body_timeout #設置請求頭和請求體(各自)的超時時間。我們也可以把這個設置低些。
#FastCGI相關參數是爲了改善網站的性能:減少資源佔用,提高訪問速度。下面參數看字面
意思都能理解,單位是秒
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#gzip模塊設置
gzip on; #開啓gzip壓縮輸出
gzip_min_length 1k; #最小壓縮文件大小
gzip_buffers 4 16k; #壓縮緩衝區
gzip_http_version 1.0; #壓縮版本(默認1.1,前端如果是squid2.5請使用1.0)
gzip_comp_level 2; #壓縮等級
gzip_types text /plain application /x-javascript text /css application /xml ;
#壓縮類型,默認就已經包含textml,所以下面就不用再寫了,寫上去也不會有問題,但是會有一個warn。
gzip_vary on;
#limit_zone crawler $binary_remote_addr 10m; #開啓限制IP連接數的時候需要使用
#虛擬主機的配置
server {
listen 80; #偵聽的80端口
#域名可以有多個,用空格隔開
server_name 10.40.50.52;
#client_header_buffer_size 4k;客戶端請求頭部的緩衝區大小。這個可以根據你的
系統分頁大小來設置,一般一個請求的頭部大小不會超過1k,不過由於一般系統分
頁都要大於1k,所以這裏設置爲分頁大小。分頁大小可以用命令getconf PAGESIZE取
得。
large_client_header_buffers 4 128k; 客戶請求頭緩衝大小。nginx默認會
用client_header_buffer_size這個buffer來讀取header值,如果header過大,它會
使用large_client_header_buffers來讀取。
client_max_body_size 300m; #允許客戶端請求的最大單文件字節數
client_body_buffer_size 128k; #緩衝區代理緩衝用戶端請求的最大字節數
proxy_connect_timeout 600; #nginx跟後端服務器連接超時時間(代理連接超時,單位秒)
proxy_read_timeout 600; #連接成功後,後端服務器響應時間(代理接收超時,單位秒)
proxy_send_timeout 600; #後端服務器數據回傳時間(代理髮送超時,單位秒)
proxy_buffer_size 64k; #設置代理服務器(nginx)保存用戶頭信息的緩衝區大小
proxy_buffers 4 32k; #proxy_buffers緩衝區,網頁平均在32k以下的話,
這樣設置
proxy_busy_buffers_size 64k; #高負荷下緩衝大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #設定緩存文件夾大小,大於這個值,將
從upstream服務器傳
——————————————————————————————————————————————————————————
#proxy_buffers 4 256k;
#設置用於讀取應答(來自被代理服務器)的緩衝區數目和大小,默認情況也爲分頁大小,根據操作系統
#的不同可能是4k或者8k
#proxy_busy_buffers_size 256k;
#proxy_temp_file_write_size 256k;
#設置在寫入proxy_temp_path時數據的大小,預防一個工作進程在傳遞文件時阻塞太長
#proxy_temp_path /data0/proxy_temp_dir;
#proxy_temp_path和proxy_cache_path指定的路徑必須在同一分區
#proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
#設置內存緩存空間大小爲200MB,1天沒有被訪問的內容自動清除,硬盤緩存空間大小爲30GB。
#client_body_buffer_size 512k;
#如果把它設置爲比較大的數值,例如256k,那麼,無論使用firefox還是IE瀏覽器,來提交任意小
於256k的圖片,都很正常。如果註釋該指令,使用默認的client_body_buffer_size設置,也就是操作
系統頁面大小的兩倍,8k或者16k,問題就出現了。
#無論使用firefox4.0還是IE8.0,提交一個比較大,200k左右的圖片,都返回500 Internal Server
Error錯誤
#proxy_intercept_errors on;
#表示使nginx阻止HTTP應答代碼爲400或者更高的應答。
——————————————————————————————————————————————————————————
#設定查看Nginx狀態的地址
location /nginxstatus {
stub_status on;
access_log on;
auth_basic "nginxstatus" ;
auth_basic_user_file htpasswd;
#htpasswd文件的內容可以用apache提供的htpasswd工具來產生。
}
————————————————————————————————————————————————————————————————————
相關數據說明
Active connections: 對後端發起的活動連接數.
Server accepts handled requests: Nginx總共處理了655個連接,成功創建655次握手(證明中間沒
有失敗的),總共處理了1985個請求.
Reading: Nginx 讀取到客戶端的Header信息數.
Writing: Nginx 返回給客戶端的Header信息數.
Waiting: 開啓keep-alive的情況下,這個值等於 active – (reading + writing),意思就是
Nginx已經處理完成,正在等候下一次請求指令的駐留連接.
所以,在訪問效率高,請求很快被處理完畢的情況下,Waiting數比較多是正常的.如果reading +writing
數較多,則說明併發訪問量非常大,正在處理過程中.
————————————————————————————————————————————————————————————————————
#hone服務
location /hone {
index index.html index.htm index.jsp;
proxy_pass http: //11 .33.22.56:8080 /hone ;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host:$server_port;
}
#門戶網站
location /GR133 {
index index.html index.htm index.jsp;
proxy_pass http: //192 .168.133.12:8585 /GR133 ;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host:$server_port;
}
location /GR133File {
index index.html index.htm index.jsp;
proxy_pass http: //192 .168.133.12:8585 /GR133File ;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host:$server_port;
}
#不允許訪問的網站目錄
location ~ ^/(WEB-INF|META-INF)/{
deny all;
}
error_page 500 502 503 504 /50x .html;
location = /50x .html {
root html;
}
}
include /opt/nginx/conf/vhost/ *.conf; #加載其它配置文件
}
|