Nginx配置詳解

2021-08-10 18:07:46 字數 4487 閱讀 4127

nginx的配置檔案nginx.conf配置詳解如下:

user nginx nginx ;

nginx使用者及組:使用者 組。window下不指定

worker_processes 8;

工作程序:數目。根據硬體調整,通常等於cpu數量或者2倍於cpu。

error_log  logs/error.log;  

error_log  logs/error.log  notice;  

error_log  logs/error.log  info;  

錯誤日誌:存放路徑。

pid logs/nginx.pid;

pid(程序識別符號):存放路徑。

worker_rlimit_nofile 204800;

指定程序可以開啟的最大描述符:數目。

這個指令是指當乙個nginx程序開啟的最多檔案描述符數目,理論值應該是最多開啟檔案數(ulimit -n)與nginx程序數相除,但是nginx分配請求並不是那麼均勻,所以最好與ulimit -n 的值保持一致。

現在在linux 2.6核心下開啟檔案開啟數為65535,worker_rlimit_nofile就相應應該填寫65535。

這是因為nginx排程時分配請求到程序並不是那麼的均衡,所以假如填寫10240,總併發量達到3-4萬時就有程序可能超過10240了,這時會返回502錯誤。

events

##設定http伺服器,利用它的反向**功能提供負載均衡支援

nginx的upstream目前支援4種方式的分配

1、輪詢(預設)

每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。

2、weight

指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。

例如:upstream bakend 

2、ip_hash

每個請求按訪問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中增加

每個裝置的狀態設定為:

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進行匹配.可以進行重定向或者進行新的** 負載均衡

##配置虛擬機器

}##其他舉例

#設定檢視nginx狀態的位址

location ~ /\.ht 

#禁止訪問.ht***檔案 }

注釋:變數

ngx_http_core_module模組支援內建變數,他們的名字和apache的內建變數是一致的。

首先是說明客戶請求title中的行,例如$http_user_agent,$http_cookie等等。

此外還有其它的一些變數

$args此變數與請求行中的引數相等

$content_length等於請求行的「content_length」的值。

$content_type等同與請求頭部的」content_type」的值

$document_root等同於當前請求的root指令指定的值

$document_uri與$uri一樣

$host與請求頭部中「host」行指定的值或是request到達的server的名字(沒有host行)一樣

$limit_rate允許限制的連線速率

$request_method等同於request的method,通常是「get」或「post」

$remote_addr客戶端ip

$remote_port客戶端port

$remote_user等同於使用者名稱,由ngx_http_auth_basic_module認證

$request_filename當前請求的檔案的路徑名,由root或alias和uri request組合而成

$request_body_file

$request_uri含有引數的完整的初始uri

$query_string與$args一樣

$sheeme http模式(http,https)盡在要求是評估例如

rewrite ^(.+)$ $sheme: redirect;

$server_protocol等同於request的協議,使用「http/或「http/

$server_addr request到達的server的ip,一般獲得此變數的值的目的是進行系統呼叫。為了避免系統呼叫,有必要在listen指令中指明ip,並使用bind引數。

$server_name請求到達的伺服器名

$server_port請求到達的伺服器的埠號

$uri等同於當前request中的uri,可不同於初始值,例如內部重定向時或使用index

Nginx配置詳解

nginx的主要配置檔案是nginx.conf,位於安裝目錄下的nginx conf資料夾裡,主要的配置引數如下 定義nginx執行的使用者和使用者組 user nobody nobody nginx程序數,建議設定為等於cpu總核心數。worker processes 8 全域性錯誤日誌定義型別,...

nginx配置詳解

定義nginx執行的使用者和使用者組 user www www nginx程序數,建議設定為等於cpu總核心數。worker processes 8 全域性錯誤日誌定義型別,debug info notice warn error crit error log var log nginx error...

NGINX配置詳解

nginx 配置檔案 user nginx 使用者worker processes 8 工作程序,根據硬體調整,大於等於cpu核數 error log logs nginx error.log crit 錯誤日誌 pid logs nginx.pid pid放置的位置 worker rlimit n...