nginx的配置系統由乙個主配置檔案和其他一些輔助的配置檔案構成。這些配置檔案均是純文字檔案,全部位於nginx安裝目錄下的conf目錄下。
由於除主配置檔案nginx.conf以外的檔案都是在某些情況下才使用的,而只有主配置檔案是在任何情況下都被使用的。所以在這裡我們就以主配置檔案為例,來解釋nginx的配置系統。
在nginx.conf中,包含若干配置項。每個配置項由配置指令和指令引數2個部分構成。指令引數也就是配置指令對應的配置值。
下面是我的nginx伺服器的配置,用於實現負載均衡和https
nginx.conf中的配置資訊,根據其邏輯上的意義,對它們進行了分類,也就是分成了多個作用域,或者稱之為配置指令上下文。不同的作用域含有乙個或者多個配置項。worker_processes 16;#啟動程序,通常設定成和cpu的數量相等
#工作模式及連線數上限
events
#設定http伺服器,利用它的反向**功能提供負載均衡支援
}}
main: nginx在執行時與具體業務功能(比如http服務或者email服務**)無關的一些引數,比如工作程序數,執行的身份等。
http: 與提供http服務相關的一些配置引數。例如:是否使用keepalive啊,是否使用gzip進行壓縮等。
server: http服務上支援若干虛擬主機。每個虛擬主機乙個對應的server配置項,配置項裡面包含該虛擬主機相關的配置。在提供mail服務的**時,也可以建立若干server.每個server通過監聽的位址來區分。
location: http服務中,某些特定的url對應的一系列配置項。
mail: 實現email相關的smtp/imap/pop3**時,共享的一些配置項(因為可能實現多個**,工作在多個監聽位址上)。
#定義nginx執行的使用者和使用者組
user www www;
#nginx程序數,建議設定為等於cpu總核心數。
worker_processes 8;
#全域性錯誤日誌定義型別,[ debug | info | notice | warn | error | crit ]
error_log /usr/local/nginx/logs/error.log info;
#程序pid檔案
pid /usr/local/nginx/logs/nginx.pid;
#指定程序可以開啟的最大描述符:數目
#工作模式與連線數上限
#這個指令是指當乙個nginx程序開啟的最多檔案描述符數目,理論值應該是最多開啟檔案數(ulimit -n)與nginx程序數相除,但是nginx分配請求並不是那麼均勻,所以最好與ulimit -n 的值保持一致。
#現在在linux 2.6核心下開啟檔案開啟數為65535,worker_rlimit_nofile就相應應該填寫65535。
#這是因為nginx排程時分配請求到程序並不是那麼的均衡,所以假如填寫10240,總併發量達到3-4萬時就有程序可能超過10240了,這時會返回502錯誤。
worker_rlimit_nofile 65535;
events
#設定http伺服器,利用它的反向**功能提供負載均衡支援
#每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問乙個後端伺服器,可以解決session的問題。
#例如:
#upstream bakend
#3、fair(第三方)
#按後端伺服器的響應時間來分配請求,響應時間短的優先分配。
#upstream backend
#4、url_hash(第三方)
#按訪問url的hash結果來分配請求,使每個url定向到同乙個後端伺服器,後端伺服器為快取時比較有效。
#例:在upstream中加入hash語句,server語句中不能寫入weight等其他的引數,hash_method是使用的hash演算法
#upstream backend
#tips:
#upstream bakend
#在需要使用負載均衡的server中增加 proxy_pass http://bakend/;
#每個裝置的狀態設定為:
#1.down表示單前的server暫時不參與負載
#2.weight為weight越大,負載的權重就越大。
#3.max_fails:允許請求失敗的次數預設為1.當超過最大次數時,返回proxy_next_upstream模組定義的錯誤
#4.fail_timeout:max_fails次失敗後,暫停的時間。
#5.backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這台機器壓力會最輕。
#nginx支援同時設定多組的負載均衡,用來給不用的server來使用。
#client_body_in_file_only設定為on 可以講client post過來的資料記錄到檔案中用來做debug
#client_body_temp_path設定記錄檔案的目錄 可以設定最多3層目錄
#location對url進行匹配.可以進行重定向或者進行新的** 負載均衡
}#虛擬主機的配置
server
#快取時間設定
#js和css快取時間設定
location ~ .*.(js|css)?$
#日誌格式設定
#$remote_addr與$http_x_forwarded_for用以記錄客戶端的ip位址;
#$remote_user:用來記錄客戶端使用者名稱;
#$time_local: 用來記錄訪問時間與時區;
#$request: 用來記錄請求的url與http協議;
#$status: 用來記錄請求狀態;成功是200,
#$body_bytes_sent :記錄傳送給客戶端檔案主體內容大小;
#通常web伺服器放在反向**的後面,這樣就不能獲取到客戶的ip位址了,通過$remote_add拿到的ip位址是反向**伺服器的ip位址。反向**伺服器在**請求的http頭資訊中,可以增加x_forwarded_for資訊,用以記錄原有客戶端的ip位址和原來客戶端的請求的伺服器位址。
#定義本虛擬主機的訪問日誌
access_log /usr/local/nginx/logs/host.access.log main;
access_log /usr/local/nginx/logs/host.access.404.log log404;
#對 "/" 啟用反向**
location /
#設定檢視nginx狀態的位址
location /nginxstatus
#本地動靜分離反向**配置
#所有jsp的頁面均交由tomcat或resin處理
location ~ .(jsp|jspx|do)?$
#所有靜態檔案由nginx直接讀取不經過tomcat或resin
配置Nginx實現負載均衡
在關於高併發負載均衡一文中已經提到,企業在解決高併發問題時,一般有兩個方向的處理策略,軟體 硬體,硬體上新增負載均衡器分發大量請求,軟體上可在高併發瓶頸處 資料庫 web伺服器兩處新增解決方案,其中web伺服器前面一層最常用的的新增負載方案就是使用nginx實現負載均衡。一 負載均衡的作用 1 功能...
配置Nginx實現負載均衡
在關於高併發負載均衡一文中已經提到,企業在解決高併發問題時,一般有兩個方向的處理策略,軟體 硬體,硬體上新增負載均衡器分發大量請求,軟體上可在高併發瓶頸處 資料庫 web伺服器兩處新增解決方案,其中web伺服器前面一層最常用的的新增負載方案就是使用nginx實現負載均衡。一 負載均衡的作用 1 功能...
配置Nginx實現負載均衡
在關於高併發負載均衡一文中已經提到,企業在解決高併發問題時,一般有兩個方向的處理策略,軟體 硬體,硬體上新增負載均衡器分發大量請求,軟體上可在高併發瓶頸處 資料庫 web伺服器兩處新增解決方案,其中web伺服器前面一層最常用的的新增負載方案就是使用nginx實現負載均衡。一 負載均衡的作用 1 功能...