user nginx;
#運行用戶。
#worker_processes 1;
#啓動進程,通常設置成和CPU的數量相等。
###my add
worker_processes 4;
#啓動進程,通常設置成和CPU的數量相等。
worker_cpu_affinity 0001 0010 0100 1000;
#可以用來綁定每個nginx進程所使用的CPU.上面設置爲4個CPU,則這裏0001表示第一個CPU啓用。0010表示第二個CPU啓用。這個設置可以把任務分配到每個CPU上面。
worker_rlimit_nofile 65535;
#這個指令是指當一個nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與nginx 進程數相除,但是nginx 分配請求並不是那麼均勻,所以最好與ulimit -n 的值保持一致。現在在linux 2.6內核下開啓文件打開數爲65535,worker_rlimit_nofile就相應應該填寫65535
#####關於系統連接數的優化。
#linux 默認值 open files 和 max user processes 爲 1024
#ulimit -n
#1024
#ulimit –u
#1024
#問題描述: 說明 server 只允許同時打開 1024 個文件,處理 1024 個用戶進程使用ulimit -a 可以查看當前系統的所有限制值,使用ulimit -n 可以查看當前的最大打開文件數。新裝的linux 默認只有1024 ,當作負載較大的服務器時,很容易遇到error: too many open files 。因此,需要將其改大。
#解決方法:
#使用 ulimit –n 65535 可即時修改,但重啓後就無效了。(注ulimit -SHn 65535 等效 ulimit -n 65535 ,-S 指soft ,-H 指hard)
#在/etc/security/limits.conf 最後增加:
#* soft nofile 65535
#* hard nofile 65535
#* soft nproc 65535
#* hard nproc 65535
#重新登錄即可生效。
#####關於系統連接數的優化。
###
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
#全局錯誤日誌及PID文件
events {
worker_connections 10240;
#單個後臺worker process進程的最大併發鏈接數。最大連接數 = worker_processes * worker_connections/4
#worker_connections也是個事件模塊指令,用於定義Nginx每個進程的最大連接數,默認是1024.最大客戶端連接數由worker_processes和worker_connections決定,即Max_client=worker_processes*worker_connections,在作爲反向代理時,max_clients變爲:max_clients = worker_processes * worker_connections/4。
#進程的最大連接數受Linux系統進程的最大打開文件數限制,在執行操作系統命令“ulimit -n 65536”後worker_connections的設置才能生效。
##工作進程的最大連接數量,根據硬件調整, 和前面工作進程配合起來用,儘量大,但是別把cpu跑到100%就行
###mys add
use epoll;
#epoll是多路複用IO中的一種方式,但是僅用於linux2.6以上內核,可以大大提高NGINX性能。
#use是個事件模塊指令,用來指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是標準的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平臺上,而kqueue用在BSD系統中。對於Linux系統,epoll工作模式是首選。
#####
}
http {
include /etc/nginx/mime.types;
#設定mime類型,由mime.types文件定義。
default_type application/octet-stream;
#default_type屬於HTTP核心模塊指令,這裏設定默認類型爲二進制流,也就是當文件類型未定義時使用這種方式,例如在沒有配置PHP環境時,Nginx是不予解析的,此時,用瀏覽器訪問PHP文件就會出現下載窗口。
###my add
server_name_in_redirect off;
#http://blog.s135.com/post/382/
#在某些情況下(具體可參考 wiki.nginx.org),Nginx 內部重定向規則會被啓動.
#例如,當 URL 指向一個目錄並且在最後沒有包含“/”時,Nginx 內部會自動的做一個 301 重定向,這時會有兩種情況:
#1、server_name_in_redirect on(默認),URL 重定向爲: server_name 中的第一個域名 + 目錄名 + /;
#2、server_name_in_redirect off,URL 重定向爲: 原 URL 中的域名 + 目錄名 + /。
server_names_hash_bucket_size 128;
##不能帶單位!配置個主機時必須設置該值,否則無法運行Nginx或測試時不通過,該設置與server_names_hash_max_size 共同控制保存服務器名的HASH表,hash bucket size總是等於hash表的大小,並且是一路處理器緩存大小的倍數。若hash bucket size等於一路處理器緩存的大小,那麼在查找鍵的時候,最壞的情況下在內存中查找的次數爲2。第一次是確定存儲單元的地址,第二次是在存儲單元中查找鍵 值。若報出hash max size 或 hash bucket size的提示,則我們需要增加server_names_hash_max_size的值。
server_tokens off;
#隱藏nginx版本號.
client_header_buffer_size 32k;
#客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求頭的大小不會超過1k,不過由於一般系統分頁都要大於1k,所以這裏設置爲分頁大小。
#分頁大小可以用命令getconf PAGESIZE 取得。
#但也有client_header_buffer_size超過4k的情況,但是client_header_buffer_size該值必須設置爲“系統分頁大小”的整倍數。
#這個配置可接收32k以下的header,在瀏覽器中cookie的字節數上限會非常大,所以實在是不好去使用那最大值。
large_client_header_buffers 4 32k;
#用來指定客戶端請求中較大的消息頭的緩存最大數量和大小, “4”爲個數,“32K”爲大小,最大緩存爲4個32K
client_max_body_size 32M;
#允許客戶端請求的最大單文件字節數。
client_body_timeout 10;
#設置客戶端請求主體讀取超時時間。如果超過這個時間,客戶端還沒有發送任何數據,Nginx將返回“Request time out(408)”錯誤,默認值是60。
client_header_timeout 10;
#設置客戶端請求頭讀取超時時間。如果超過這個時間,客戶端還沒有發送任何數據,Nginx將返回“Request time out(408)”錯誤。
client_body_buffer_size 128k;
#緩衝區代理緩衝用戶端請求的最大字節數http://blog.csdn.net/yui/article/details/6457922
open_file_cache max=65535 inactive=60s;
#這個將爲打開文件指定緩存,默認是沒有啓用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時間文件沒被請求後刪除緩存。
open_file_cache_valid 30s;
#這個是指多長時間檢查一次緩存的有效信息。
open_file_cache_min_uses 1;
# 如果有一個文件在inactive時間內一次都沒被使用,它將被稱除。
#最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打開的。
open_file_cache_errors on;
#指定是否在搜索一個文件時記錄cache錯誤。
fastcgi_connect_timeout 300;
#指定連接到後端fastcgi的超時時間
fastcgi_send_timeout 300;
#向FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向FastCGI 傳送請求的超時時間。
fastcgi_read_timeout 300;
#接收FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收FastCGI 應答的超時時間。
fastcgi_buffer_size 256k;
#指定讀取FastCGI 應答第一部分需要用多大的緩衝區,一般第一部分應答不會超過1k,由於頁面大小爲32k,所以這裏設置爲32k。
fastcgi_buffers 2 256k;
#指定本地需要用多少和多大的緩衝區來緩衝FastCGI 的應答。
#定本地需要用多少和多大的緩衝區來緩衝FastCGI的應答請求。如果一個PHP腳本所產生的頁面大小爲256KB,那麼會爲其分配4個64KB的緩衝區來緩存;如果頁面大小大於256KB,那麼大於256KB的部分會緩存到fastcgi_temp指定的路徑中,但是這並不是好方法,因爲內存中的數據處理速度要快於硬盤。一般這個值應該爲站點中PHP腳本所產生的頁面大小的中間值,如果站點大部分腳本所產生的頁面大小爲256KB,那麼可以把這個值設置爲“16 16k”、“4 64k”等。
fastcgi_busy_buffers_size 256k;
#這個指令我也不知道是做什麼用,只知道默認值是fastcgi_buffer_size的兩倍。http://www.linuxidc.com/Linux/2010-08/27874.htm
fastcgi_temp_file_write_size 256k;
#在寫入fastcgi_temp_path 時將用多大的數據塊,默認值是fastcgi_buffer_size 的兩倍。
#fastcgi_cache_path /tmp/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=2m;
#這個指令爲FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。並指定的緩存名稱TEST。
#這裏最好是放在server段中來調用。如果在這裏調用,會對其它站點產生混亂。
#fastcgi_cache TEST;
#開啓FastCGI 緩存。個人感覺開啓緩存非常有用,可以有效降低CPU 負載,並且防止502 錯誤。
#fastcgi_cache_valid 200 302 1h;
#fastcgi_cache_valid 301 1d;
#fastcgi_cache_valid any 1m;
#爲指定的應答代碼指定緩存時間,如上例中將200,302 應答緩存一小時,301 應答緩存1 天,其他爲1 分鐘。
#fastcgi_cache_min_uses 2;
#緩存在fastcgi_cache_path 指令inactive 參數值時間內的最少使用次數,如上例,如果在5 分鐘內某文件1 次也沒有被使用,那麼這個文件將被移除。
#設置鏈接請求幾次就被緩存
#fastcgi_cache_use_stale error timeout invalid_header http_500;
#不知道這個參數的作用,猜想應該是讓nginx 知道哪些類型的緩存是沒用的。
#以上爲nginx 中FastCGI 相關參數
#另外,FastCGI 自身也有一些配置需要進行優化,如果你使用php-fpm 來管理FastCGI,可以修改配置文件中的以下值:
#<value name="max_children">60</value>
#同時處理的併發請求數,即它將開啓最多60 個子線程來處理併發連接。
#<value name="rlimit_files">102400</value>
#最多打開文件數。
#<value name="max_requests">204800</value>
#每個進程在重置之前能夠執行的最多請求數。
####
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 /var/log/nginx/access.log main;
#設置日誌的格式。
sendfile on;
#指定nginx是否調用sendfile函數來輸出文件,對於普通應用必須設置爲on,如果用來進行下載等應用磁盤IO負載較重,可設置爲off,以平衡磁盤與網絡IO處理速度,降低系統的uptime.
tcp_nopush on;
###my add
tcp_nodelay on;
##tcp_nodelay 和 tcp_nopush這兩個指令也許是最難理解的nginx配置, 他們對於nginx的影響在網絡的較低層。 你可以簡單的認爲這些指令決定了操作系統如何處理網絡緩存和他們何時將這些緩存輸出到最終用戶(客戶端)。 我只能建議大家如果你之前不瞭解這些概念你最好不要動它。 他們不會顯著的改善或者改變性能, 所以最好使用他們的默認值。
###
keepalive_timeout 35;
#連接超時時間。也許你不需要把keepalive-timeout設置爲65, 但是10-20應該是比較通用的選擇,正如上面一段所說, Nginx會很好的處理這方面。
gzip on;
#開啓gzip壓縮。
###my add
gzip_buffers 4 16k;
#設置gzip申請內存的大小,其作用是按塊大小的倍數申請內存空間
gzip_http_version 1.0;
#用於識別http協議的版本,早期的瀏覽器不支持gzip壓縮,用戶會看到亂碼,所以爲了支持前期版本加了此選項,目前此項基本可以忽略
gzip_comp_level 2;
#一般來說gzip_comp_level的值不會在性能方面有多大的差別,設爲爲4-5即可。 一味的增加它是沒有意義的只是浪費的CPU的週期。
#設置gzip壓縮等級,等級越底壓縮速度越快文件壓縮比越小,反之速度越慢文件壓縮比越大.等級是1-9
gzip_types text/plain application/x-javascript text/css application/xml;
#設置需要壓縮的MIME類型,非設置值不進行壓縮
gzip_proxied expired no-cache no-store private auth;
#Nginx做爲反向代理的時候啓用.
#param:off|expired|no-cache|no-sotre|private|no_last_modified|no_etag|auth|any]
#off – 關閉所有的代理結果數據壓縮
#expired – 啓用壓縮,如果header中包含”Expires”頭信息
#no-cache – 啓用壓縮,如果header中包含”Cache-Control:no-cache”頭信息
#no-store – 啓用壓縮,如果header中包含”Cache-Control:no-store”頭信息
#private – 啓用壓縮,如果header中包含”Cache-Control:private”頭信息
#no_last_modified – 啓用壓縮,如果header中包含”Last_Modified”頭信息
#no_etag – 啓用壓縮,如果header中包含“ETag”頭信息
#auth – 啓用壓縮,如果header中包含“Authorization”頭信息
#any – 無條件壓縮所有結果數據
#gzip_very on;
#和http頭有關係,加個vary頭,給代理服務器用的,有的瀏覽器支持壓縮,有的不支持,所以避免浪費不支持的也壓縮,所以根據客戶端的HTTP頭來判斷,是否需要壓縮
gzip_static on;
#這裏是設置對gz文件的識別。
#例如:在站點建立一個a.html文件,然後gzip a.html壓縮文件生成了a.html.gz。當此選項打開時,用戶可以瀏覽a.html.gz文件並生成a.html文件的內容。如果此項不開則提示找不到頁面。
gzip_min_length 512;
#當返回內容大於此值時纔會使用gzip進行壓縮,以K爲單位,當值爲0時,所有頁面都進行壓縮
output_buffers 1 32k;
postpone_output 1460;
proxy_cache_path /tmp/nginx/cache levels=1:2 keys_zone=staticfilecache:80m inactive=1d max_size=2500m;
##設置緩存目錄爲二級目錄,共享內存區大小,非活動時間,最大容量,注意臨時目錄要跟緩存目錄在同一個分區。
proxy_temp_path /tmp/nginx/proxy;
##設置臨時目錄
proxy_connect_timeout 300;
#nginx跟後端服務器連接超時時間(代理連接超時)
proxy_read_timeout 120;
#連接成功後,後端服務器響應時間。
proxy_send_timeout 120;
#後端服務器數據回傳時間
proxy_buffering on;
#該指令開啓從後端被代理服務器的響應內容緩衝.
#如果緩衝區開啓,nginx假定被代理的後端服務器會以最快速度響應,並把內容保存在由指令proxy_buffer_size 和 proxy_buffers指定的緩衝區裏邊.
#如果響應內容無法放在內存裏邊,那麼部分內容會被寫到磁盤上。
#如果緩衝區被關閉了,那麼響應內容會按照獲取內容的多少立刻同步傳送到客戶端。
#nginx不嘗試計算被代理服務器整個響應內容的大小,nginx能從服務器接受的最大數據,是由指令proxy_buffer_size指定的.
#對於基於長輪詢(long-polling)的Comet 應用來說,關閉 proxy_buffering 是重要的,不然異步響應將被緩存導致Comet無法工作
proxy_buffer_size 4k;
#設置代理服務器保存用戶頭信息的緩衝區大小。
#該指令設置緩衝區大小,從代理後端服務器取得的第一部分的響應內容,會放到這裏.
#小的響應header通常位於這部分響應內容裏邊.
#默認來說,該緩衝區大小等於指令 proxy_buffers所設置的;但是,你可以把它設置得更小.
proxy_buffers 8 4k;
#該指令設置緩衝區的大小和數量,從被代理的後端服務器取得的響應內容,會放置到這裏. 默認情況下,一個緩衝區的大小等於內存頁面大小,可能是4K也可能是8K,這取決於平臺。內存頁面大小可以用getconf PAGESIZE命令獲取。
proxy_temp_file_write_size 64k;
#設定緩存文件夾大小,大於這個值,將從upstream服務器傳送。
proxy_busy_buffers_size 16k;
#高負載下緩衝大小。proxy_busy_buffers_size是用來控制同時傳輸到客戶端的buffer數量的.
#http://blog.sina.com.cn/s/blog_5410860001011fq1.html
####
autoindex on;
# 防止目錄瀏覽,應該也可以用在server中。
include /etc/nginx/conf.d/*.conf;
}
conf.d下的配置文件
upstream test{
server 192.168.0.1:3000;
server 192.168.0.2:3000;
}
#輪詢檢查,每個請求按時間順序逐一分配到不同的後端服務器 ,如果後端服務器down掉,能自動剔除。
upstream www.a.com{
server 10.1.230.215:80 weight=2 max_fails=3 fail_timeout=20s;
server 10.1.230.216:80 weight=2 max_fails=3 fail_timeout=20s;
server 10.1.230.217:80 weight=2 max_fails=3 fail_timeout=20s;
server 10.1.230.218:80 backup;
keepalive 32;
#做反向代理時很有用。設置保存的最大連接數。這樣可以減少不必要的連接建立時間。從而減小網絡之間的流量
check interval=3000 rise=2 fall=5 timeout=1000;
#需要nginx_upstream_check_module模塊支持
#interval檢測時間間隔單位是毫秒
#rise請求2次正常的話,標記爲up
#fall表示請求5次都失敗,標記爲down
#timeout表示超時時間單位是毫秒
#前段nginx做反代,如果後端服務器宕掉的話,nginx是不能把這臺realserver提出upstream的,所以還會有請求轉發到後端的這臺realserver上面去,雖然nginx可以在localtion中啓用proxy_next_upstream來解決返回給用戶的錯誤頁面,方法在:http://www.linuxyan.com/web-server/67.html,大家可以參考一下,但這個還是會把請求轉發給這臺服務器的,然後再轉發給別的服務器,這樣就浪費了一次轉發,這次藉助與淘寶技術團隊開發的nginx模快nginx_upstream_check_module來檢測後方realserver的健康狀態,如果後端服務器不可用,則所以的請求不轉發到這臺服務器。
#http://www.linuxyan.com/web-server/90.html
}
#weight指定輪詢機率,weight和訪問比率成正比,用於後端服務器性能不均的情況。
#server中有以下參數
1.down 表示單前的server暫時不參與負載
2.weight 默認爲1.weight越大,負載的權重就越大。
3.max_fails :允許請求失敗的次數默認爲1.當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤
4.fail_timeout:max_fails次失敗後,暫停的時間。
5.backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這臺機器壓力會最輕。
upstream php{
ip_hash;
server 10.1.230.217:80;
server 10.1.230.215:80;
server 10.1.230.216:80;
server 10.1.230.218:80;
check interval=3000 rise=2 fall=5 timeout=1000;
}
#ip_hash方式,每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端服務器,可以解決session 的問題。
upstream backend {
server server1;
server server2;
fair;
}
#fair,第三方按後端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream backend {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
#url_hash(第三方)按訪問url的hash結果來分配請求,使每個url定向到同一個後端服務器,後端服務器爲緩存時比較有效。在upstream中加入hash語句,server語句中不能寫入weight等其他的參數,hash_method是使用的hash算法
proxy_temp_path /tmp/nginx/temp;
#設置臨時目錄
proxy_cache_path /tmp/nginx/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
#設置緩存目錄爲二級目錄,共享內存區大小,非活動時間,最大容量,注意臨時目錄要跟緩存目錄在同一個分區。
autoindex on;
# 防止目錄瀏覽
server {
listen 80;
#偵聽80端口
server_name www.a.com;
#定義使用www.xx.com訪問
access_log /var/log/nginx/www.a.com-access_log main;
#######負載均衡配置#########
location ~ /\.ht {
deny all;
# 防止.ht文件被請求
}
if ($host = 'a.com') {
rewrite ^/(.*)$ http://www.a.com/$1 permanent;
}
#如果訪問地址是a.com,則轉向www.a.com
location =/ {
proxy_pass http://www.a.com;
include /etc/nginx/conf.d/proxy.conf;
proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
#proxy_next_upstream用來定義故障轉移策略,當後端服務節點返回500、502、503、504和執行超時等錯誤時,自動將請求轉發到upstream負>載均衡組中的另一臺服務器,實現故障轉移
}
#訪問首頁負載到www.a.com這組服務器。這裏並不包括http://www.a.com/index.html,因爲下面html會被緩存。
location ^~/(p_w_picpaths|doc)/ {
#所有訪問http://www.a.com/p_w_picpaths/....或者http://www.a.com/doc/...都被緩存。保存24小時。
include /etc/nginx/conf.d/proxy.conf;
proxy_pass http://www.a.com;
proxy_cache cache_one;
#對不同的HTTP狀態碼設置不同的緩存名稱
proxy_cache_key $host$uri$is_args$args;
#proxy_cache_key 指定了包含在緩存中的緩存關鍵字(默認情況下服務器的主機名並沒有包含到緩存關鍵字中)
proxy_cache_valid 200 304 12h;
#以域名、URI、參數組合成Web緩存的Key值,Nginx根據Key值哈希,存儲緩存內容到二級緩存目錄內
expires 24h;
#設置過期時間爲24H
}
location /login {
proxy_pass http://www.a.com;
include /etc/nginx/conf.d/proxy.conf;
proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
}
#訪問http://www.a.com/login匹配這條規則。
#tomcat負載1
#location ~ \.(do|jsp|action|xml)$ {
# proxy_pass http://tomcat;
# include /etc/nginx/conf.d/proxy.conf;
# proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
#}
#這裏被區分大小寫
#tomcat負載2
location ~ .*\.(do|jsp|action|xml)?$ {
proxy_pass http://tomcat;
include /etc/nginx/conf.d/proxy.conf;
proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
}
#這個不區分大小寫。
#location !~ \.xhtml$ {
#規則F
#}
#location !~* \.xhtml$ {
#規則G
#}
#上面兩個規則,當訪問 http://www.a.com/a.xhtml 不會匹配規則F和規則G,http://localhost/a.XHTML不會匹配規則G,因爲不區分大小寫。規則F,規則G屬於排除法,符合匹配規則但是不會匹配到.
#ASP負載
location ~*\.(aspx|asp|config)$ {
proxy_pass http://iis;
include /etc/nginx/conf.d/proxy.conf;
proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
}
#PHP負載,perl cgi負載
location ~*\.(php|cgi)$ {
proxy_pass http://php;
include /etc/nginx/conf.d/proxy.conf;
proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
}
location ~* /purge(/.*)
#當訪問http://www.a.com/purge/...時會匹配這個規則。
{
allow 10.1.230.35;
#allow 10.1.230.0/24;
deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
}
location ~*\.(png|jpg|gif|GIF|jpeg|JPG|PNG|bmp|BMP|JPEG|ico|txt|css|js|htm|html)$
#訪問所有不區分大小寫PNG,JPG等結尾的匹配這裏。
{
include /etc/nginx/conf.d/proxy.conf;
proxy_pass http://www.a.com;
proxy_cache cache_one;
#對不同的HTTP狀態碼設置不同的緩存名稱
proxy_cache_key $host$uri$is_args$args;
#proxy_cache_key 指定了包含在緩存中的緩存關鍵字(默認情況下服務器的主機名並沒有包含到緩存關鍵字中)
proxy_cache_valid 200 304 12h;
#以域名、URI、參數組合成Web緩存的Key值,Nginx根據Key值哈希,存儲緩存內容到二級緩存目錄內
expires 24h;
#設置過期時間爲24H
}
#圖片文件開啓緩存,並允許一些機器清除緩存。
#如http://www.a.com/p_w_picpath/a.jpb.jpg這個訪問圖看,則需http://www.a.com/purge/p_w_picpath/a.jpb.jpg來清除緩存。這裏的順序是purge在前,\.(png|jpg等在後。
location / {
proxy_pass http://www.a.com;
include /etc/nginx/conf.d/proxy.conf;
proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
#proxy_next_upstream用來定義故障轉移策略,當後端服務節點返回500、502、503、504和執行超時等錯誤時,自動將請求轉發到upstream負>載均衡組中的另一臺服務器,實現故障轉移
}
#這個是默認規則。當所有規則不匹配時匹配這裏的規則。
#########################nginx狀態##############
location ~*/NginxStatus?$ {
#這裏的~*表示不區分大小寫,http://www.a.com/nginxstatus或者NGINXSTATUS都可以打開。如果沒有後面的?$表示結尾,則輸入NGINXSTATUS...都可以打開。
stub_status on;
#stub_status設置爲“on”表示啓用StubStatus的工作狀態統計功能。.
access_log /var/log/nginx/NginxStatus.log;
#access_log 用來指定StubStatus模塊的訪問日誌文件。
auth_basic "NginxStatus";
#auth_basic是Nginx的一種認證機制。
auth_basic_user_file /etc/nginx/htpasswd;
#auth_basic_user_file用來指定認證的密碼文件,由於Nginx的auth_basic認證採用的是與Apache兼容的密碼文件,因此需要用Apache的htpasswd命令來生成密碼文件.
#例如要添加一個webadmin用戶,可以使用下面方式生成密碼文件:
#/usr/local/apache/bin/htpasswd -c /opt/nginx/conf/htpasswd webadmin
#會得到以下提示信息:
#New password:
#輸入密碼之後,系統會要求再次輸入密碼。確認之後添加用戶成功。
}
#################################################
location /status {
check_status;
access_log off;
allow 10.1.230.35;
deny all;
}
}