common

最外層設(shè)置
# Nginx用戶及組:用戶 組。window下不指定 user nginx nginx ; # 工作進程:數(shù)目。根據(jù)硬件調(diào)整,通常等于CPU數(shù)量或者2倍于CPU。 worker_processes 8; # 錯誤日志:存放路徑。 error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; # pid(進程標(biāo)識符):存放路徑。 pid logs/nginx.pid; # 指定進程可以打開的描述符:數(shù)目。 # 這個指令是指當(dāng)一個nginx進程打開的最多文件描述符數(shù)目,理論值應(yīng)該是最多打開文件數(shù)(ulimit -n)與nginx進程數(shù)相除,但是nginx分配請求并不是那么均勻,所以最好與ulimit -n 的值保持一致。 # 現(xiàn)在在Linux 2.6內(nèi)核下開啟文件打開數(shù)為65535,worker_rlimit_nofile就相應(yīng)應(yīng)該填寫65535。 # 這是因為nginx調(diào)度時分配請求到進程并不是那么的均衡,所以假如填寫10240,總并發(fā)量達(dá)到3-4萬時就有進程可能超過10240了,這時會返回502錯誤。 worker_rlimit_nofile 204800; events
events { # 使用epoll的I/O 模型。linux建議epoll,F(xiàn)reeBSD建議采用kqueue,window下不指定。 # 補充說明: # 與apache相類,nginx針對不同的操作系統(tǒng),有不同的事件模型 # A)標(biāo)準(zhǔn)事件模型 # Select、poll屬于標(biāo)準(zhǔn)事件模型,如果當(dāng)前系統(tǒng)不存在更有效的方法,nginx會選擇select或poll # B)高效事件模型 # Kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用雙處理器的MacOS X系統(tǒng)使用kqueue可能會造成內(nèi)核崩潰。 # Epoll:使用于Linux內(nèi)核2.6版本及以后的系統(tǒng)。 # /dev/poll:使用于Solaris 7 11/99+,HP/UX 11.22+ (eventport),IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。 # Eventport:使用于Solaris 10。 為了防止出現(xiàn)內(nèi)核崩潰的問題, 有必要安裝安全補丁。 use epoll; # 每個工作進程的連接數(shù)量。根據(jù)硬件調(diào)整,和前面工作進程配合起來用,盡量大,但是別把cpu跑到100%就行。每個進程允許的最多連接數(shù),理論上每臺nginx服務(wù)器的連接數(shù)為。worker_processes*worker_connections worker_connections 204800; # keepalive超時時間。 keepalive_timeout 60; # 客戶端請求頭部的緩沖區(qū)大小。這個可以根據(jù)你的系統(tǒng)分頁大小來設(shè)置,一般一個請求頭的大小不會超過1k,不過由于一般系統(tǒng)分頁都要大于1k,所以這里設(shè)置為分頁大小。 # 分頁大小可以用命令getconf PAGESIZE 取得。 # [root@web001 ~]# getconf PAGESIZE # 4096 # 但也有client_header_buffer_size超過4k的情況,但是client_header_buffer_size該值必須設(shè)置為“系統(tǒng)分頁大小”的整倍數(shù)。 client_header_buffer_size 4k; # 這個將為打開文件指定緩存,默認(rèn)是沒有啟用的,max指定緩存數(shù)量,建議和打開文件數(shù)一致,inactive是指經(jīng)過多長時間文件沒被請求后刪除緩存。 open_file_cache max=65535 inactive=60s; # 這個是指多長時間檢查一次緩存的有效信息。 open_file_cache_valid 80s; # open_file_cache指令中的inactive參數(shù)時間內(nèi)文件的最少使用次數(shù),如果超過這個數(shù)字,文件描述符一直是在緩存中打開的,如上例,如果有一個文件在inactive時間內(nèi)一次沒被使用,它將被移除。 open_file_cache_min_uses 1; } http
設(shè)定http服務(wù)器,利用它的反向代理功能提供負(fù)載均衡支持
http { # 設(shè)定mime類型,類型由mime.type文件定義 include mime.types; default_type application/octet-stream; # 日志格式設(shè)置 # $remote_addr與$http_x_forwarded_for用以記錄客戶端的ip地址; # $remote_user:用來記錄客戶端用戶名稱; # $time_local: 用來記錄訪問時間與時區(qū); # $request: 用來記錄請求的url與http協(xié)議; # $status: 用來記錄請求狀態(tài);成功是200; # $body_bytes_sent :記錄發(fā)送給客戶端文件主體內(nèi)容大小; # $http_referer:用來記錄從那個頁面鏈接訪問過來的; # $http_user_agent:記錄客戶瀏覽器的相關(guān)信息; # 通常web服務(wù)器放在反向代理的后面,這樣就不能獲取到客戶的IP地址了,通過$remote_add拿到的IP地址是反向代理服務(wù)器的iP地址。 # 反向代理服務(wù)器在轉(zhuǎn)發(fā)請求的http頭信息中,可以增加x_forwarded_for信息,用以記錄原有客戶端的IP地址和原來客戶端的請求的服務(wù)器地址。 log_format main \'$remote_addr - $remote_user [$time_local] "$request" \' \'$status $body_bytes_sent "$http_referer" \' \'"$http_user_agent" "$http_x_forwarded_for"\'; log_format log404 \'$status [$time_local] $remote_addr $host$request_uri $sent_http_location\'; # 用了log_format指令設(shè)置了日志格式之后,需要用access_log指令指定日志文件的存放路徑 access_log logs/host.access.log main; access_log logs/host.access.404.log log404; # 保存服務(wù)器名字的hash表是由指令server_names_hash_max_size 和server_names_hash_bucket_size所控制的。 # 參數(shù)hash bucket size總是等于hash表的大小,并且是一路處理器緩存大小的倍數(shù)。 # 在減少了在內(nèi)存中的存取次數(shù)后,使在處理器中加速查找hash表鍵值成為可能。 # 如果hash bucket size等于一路處理器緩存的大小,那么在查找鍵的時候,最壞的情況下在內(nèi)存中查找的次數(shù)為2。 # 第一次是確定存儲單元的地址,第二次是在存儲單元中查找鍵 值。 # 因此,如果Nginx給出需要增大hash max size 或 hash bucket size的提示,那么首要的是增大前一個參數(shù)的大小. server_names_hash_bucket_size 128; # 客戶端請求頭部的緩沖區(qū)大小。 # 這個可以根據(jù)你的系統(tǒng)分頁大小來設(shè)置,一般一個請求的頭部大小不會超過1k,不過由于一般系統(tǒng)分頁都要大于1k,所以這里設(shè)置為分頁大小。 # 分頁大小可以用命令getconf PAGESIZE取得。 client_header_buffer_size 4k; # 客戶請求頭緩沖大小。 # nginx默認(rèn)會用client_header_buffer_size這個buffer來讀取header值,如果header過大,它會使用large_client_header_buffers來讀取。 large_client_header_buffers 8 128k; # 這個指令指定緩存是否啟用。 open_file_cache max=102400 inactive=20s; # 語法:open_file_cache_valid time 默認(rèn)值:open_file_cache_valid 60 # 使用字段:http, server, location 這個指令指定了何時需要檢查open_file_cache中緩存項目的有效信息. open_file_cache_valid 30s; # 語法:open_file_cache_min_uses number 默認(rèn)值:open_file_cache_min_uses 1 # 使用字段:http, server, location 這個指令指定了在open_file_cache指令無效的參數(shù)中一定的時間范圍內(nèi)可以使用的最小文件數(shù),如果使用更大的值,文件描述符在cache中總是打開狀態(tài). open_file_cache_min_uses 2; # 語法:open_file_cache_errors on | off 默認(rèn)值:open_file_cache_errors off # 使用字段:http, server, location 這個指令指定是否在搜索一個文件是記錄cache錯誤. open_file_cache_errors on; # 設(shè)定通過nginx上傳文件的大小 client_max_body_size 300m; # sendfile指令指定 nginx 是否調(diào)用sendfile 函數(shù)(zero copy 方式)來輸出文件,對于普通應(yīng)用,必須設(shè)為on。 # 如果用來進行下載等應(yīng)用磁盤IO重負(fù)載應(yīng)用,可設(shè)置為off,以平衡磁盤與網(wǎng)絡(luò)IO處理速度,降低系統(tǒng)uptime。 sendfile on; # 此選項允許或禁止使用socke的TCP_CORK的選項,此選項僅在使用sendfile的時候使用 tcp_nopush on; # 后端服務(wù)器連接的超時時間_發(fā)起握手等候響應(yīng)超時時間 proxy_connect_timeout 90; # 連接成功后_等候后端服務(wù)器響應(yīng)時間_其實已經(jīng)進入后端的排隊之中等候處理(也可以說是后端服務(wù)器處理請求的時間) proxy_read_timeout 180; # 后端服務(wù)器數(shù)據(jù)回傳時間_就是在規(guī)定時間之內(nèi)后端服務(wù)器必須傳完所有的數(shù)據(jù) proxy_send_timeout 180; # 設(shè)置從被代理服務(wù)器讀取的第一部分應(yīng)答的緩沖區(qū)大小,通常情況下這部分應(yīng)答中包含一個小的應(yīng)答頭, # 默認(rèn)情況下這個值的大小為指令proxy_buffers中指定的一個緩沖區(qū)的大小,不過可以將其設(shè)置為更小 proxy_buffer_size 256k; # 設(shè)置用于讀取應(yīng)答(來自被代理服務(wù)器)的緩沖區(qū)數(shù)目和大小,默認(rèn)情況也為分頁大小,根據(jù)操作系統(tǒng)的不同可能是4k或者8k proxy_buffers 4 256k; proxy_busy_buffers_size 256k; # 設(shè)置在寫入proxy_temp_path時數(shù)據(jù)的大小,預(yù)防一個工作進程在傳遞文件時阻塞太長 proxy_temp_file_write_size 256k; # proxy_temp_path和proxy_cache_path指定的路徑必須在同一分區(qū) proxy_temp_path /data0/proxy_temp_dir; # 設(shè)置內(nèi)存緩存空間大小為200MB,1天沒有被訪問的內(nèi)容自動清除,硬盤緩存空間大小為30GB。 proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g; # keepalive超時時間 keepalive_timeout 120; tcp_nodelay on; # 如果把它設(shè)置為比較大的數(shù)值,例如256k,那么,無論使用firefox還是IE瀏覽器,來提交任意小于256k的圖片,都很正常。 # 如果注釋該指令,使用默認(rèn)的client_body_buffer_size設(shè)置,也就是操作系統(tǒng)頁面大小的兩倍,8k或者16k,問題就出現(xiàn)了。 # 無論使用firefox4.0還是IE8.0,提交一個比較大,200k左右的圖片,都返回500 Internal Server Error錯誤 client_body_buffer_size 512k; # 表示使nginx阻止HTTP應(yīng)答代碼為400或者更高的應(yīng)答 proxy_intercept_errors on; } upstream
配置在http下,可以配置多臺服務(wù)器,用于負(fù)載均衡
upstream bakend { server 127.0.0.1:8027; server 127.0.0.1:8028; server 127.0.0.1:8029; hash $request_uri; }
nginx的upstream目前支持的分配
輪詢(默認(rèn))upstream bakend { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; }
指定輪詢幾率,weight和訪問比率成正比,用于后端服務(wù)器性能不均的情況。
ip_hash
upstream bakend { ip_hash; server 192.168.0.14:88; server 192.168.0.15:80; }
每個請求按訪問ip的hash結(jié)果分配,這樣每個訪客固定訪問一個后端服務(wù)器,可以解決session的問題。
fair(第三方)
upstream backend { server server1; server server2; fair; }
按后端服務(wù)器的響應(yīng)時間來分配請求,響應(yīng)時間短的優(yōu)先分配。
url_hash(第三方)
upstream backend { server squid1:3128; server squid2:3128; hash $request_uri; hash_method crc32; }
按訪問url的hash結(jié)果來分配請求,使每個url定向到同一個后端服務(wù)器,后端服務(wù)器為緩存時比較有效。例:在upstream中加入hash語句,server語句中不能寫入weight等其他的參數(shù),hash_method是使用的hash算法
tips:
upstream bakend{# 定義負(fù)載均衡設(shè)備的Ip及設(shè)備狀態(tài)}{ ip_hash; server 127.0.0.1:9090 down; server 127.0.0.1:8080 weight=2; server 127.0.0.1:6060; server 127.0.0.1:7070 backup; }
在需要使用負(fù)載均衡的server中增加 proxy_passhttp://bakend/;
每個設(shè)備的狀態(tài)設(shè)置為:
down表示單前的server暫時不參與負(fù)載 weight為weight越大,負(fù)載的權(quán)重就越大 max_fails:允許請求失敗的次數(shù)默認(rèn)為1.當(dāng)超過次數(shù)時,返回proxy_next_upstream模塊定義的錯誤 fail_timeout:max_fails次失敗后,暫停的時間 backup:其它所有的非backup機器down或者忙的時候,請求backup機器。所以這臺機器壓力會最輕nginx支持同時設(shè)置多組的負(fù)載均衡,用來給不用的server來使用
client_body_in_file_only設(shè)置為On可以講clientpost過來的數(shù)據(jù)記錄到文件中用來做debug
client_body_temp_path設(shè)置記錄文件的目錄可以設(shè)置最多3層目錄
location對URL進行匹配.可以進行重定向或者進行新的代理負(fù)載均衡
server配置虛擬機
server { # 配置監(jiān)聽端口 listen 80; # 配置訪問域名 server_name image.***.com; # 對以“mp3或exe”結(jié)尾的地址進行負(fù)載均衡 location ~* .(mp3|exe)$ { # 設(shè)置被代理服務(wù)器的端口或套接字,以及URL proxy_pass http://img_relay$request_uri; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 以上三行,目的是將代理服務(wù)器收到的用戶的信息傳到真實服務(wù)器上 } location /face { if ($http_user_agent ~* "xnp") { rewrite ^(.*)$ http://211.151.188.190:8080/face.jpg redirect; } proxy_pass http://img_relay$request_uri; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; error_page 404 502 = @fetch; } location @fetch { access_log /data/logs/face.log log404; rewrite ^(.*)$ http://211.151.188.190:8080/face.jpg redirect; } location /image { if ($http_user_agent ~* "xnp") { rewrite ^(.*)$ http://211.151.188.190:8080/face.jpg redirect; } proxy_pass http://img_relay$request_uri; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; error_page 404 502 = @fetch; } } 內(nèi)置變量
gx_http_core_module模塊支持內(nèi)置變量,他們的名字和apache的內(nèi)置變量是一致的。
首先是說明客戶請求title中的行,例如$http_user_agent,$http_cookie等等。
此外還有其它的一些變量
$args # 此變量與請求行中的參數(shù)相等 $content_length # 等于請求行的“Content_Length”的值。 $content_type # 等同與請求頭部的”Content_Type”的值 $document_root # 等同于當(dāng)前請求的root指令指定的值 $document_uri # 與$uri一樣 $host # 與請求頭部中“Host”行指定的值或是request到達(dá)的server的名字(沒有Host行)一樣 $limit_rate # 允許限制的連接速率 $request_method # 等同于request的method,通常是“GET”或“POST” $remote_addr # 客戶端ip $remote_port # 客戶端port $remote_user # 等同于用戶名,由ngx_http_auth_basic_module認(rèn)證 $request_filename # 當(dāng)前請求的文件的路徑名,由root或alias和URI request組合而成 $request_body_file $request_uri # 含有參數(shù)的完整的初始URI $query_string # 與$args一樣 $sheeme # http模式(http,https)盡在要求是評估例如:Rewrite ^(.+)$ $sheme://example.com$; Redirect; $server_protocol # 等同于request的協(xié)議,使用“HTTP/或“HTTP/ $server_addr # request到達(dá)的server的ip,一般獲得此變量的值的目的是進行系統(tǒng)調(diào)用。為了避免系統(tǒng)調(diào)用,有必要在listen指令中指明ip,并使用bind參數(shù)。 $server_name # 請求到達(dá)的服務(wù)器名 $server_port # 請求到達(dá)的服務(wù)器的端口號 $uri # 等同于當(dāng)前request中的URI,可不同于初始值,例如內(nèi)部重定向時或使用index
網(wǎng)頁標(biāo)題:Nginx配置(nginx.conf)詳解
URL分享:http://chinadenli.net/article12/cjejgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、定制開發(fā)、用戶體驗、網(wǎng)站導(dǎo)航、微信公眾號、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)