ngx_http_proxy_module
proxy模塊的作用:將請求傳遞給對應的服務器
示例:
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
1.proxy_pass URL;
location /uri/ {
proxy_pass http://172.18.18.123/admin/;
}
如果proxy_pass后面帶了"/",則對應的uri則被替換為http://172.18.18.123/admin/
如果proxy_pass后面沒有帶"/",則被替換為http://172.18.18.123/admin/uri
如果location定義其uri時使用了正則表達式的模式,則proxy_pass之后必須不能使用uri
用戶請求時傳遞的uri將直接附加代理到的服務之后
location ~|~* /uri/ {
proxy_pass http://172.18.18.123;
}
2.proxy_set_header field value;
設定發往后端主機的請求報文的請求首部的值;默認設置了 Host $proxy_host 和 Connection close
也可以自己指定,如果前端有反代服務器,而又想在日志中捕獲到源請求段的ip地址,那么就可以自行對首部進行設置proxy_set_header X-Real-IP(X-Forwarded-For) $remote_addr; 變量remote_addr里面存放的就是源請求端(真實客戶端)的ip地址
3.proxy_cache_path
定義可用于proxy功能的緩存;它的作用域只能是http
4.proxy_cache zone|off;
指明要調用的緩存,或關閉緩存機制,此處的zone的值為proxy_cache_path中給定的keys_zone的值
5.proxy_cache_key string;
緩存中用于"鍵"的內容
6.proxy_cache_valid [code…] time;
定義對特定響應碼的相應內容的緩存時長;
定義在http{…}中
proxy_cache_path /var/cache/proxy_cache levels=1:1:1 keys_zone=cache:20m max_size=1g;
定義在需要調用緩存功能的配置段,如server{…};
proxy_cache cache;
proxy_cache_key $request_uri;
proxy_cache_valid 200 302 301 1h;
proxy_cache_valid any 1m;
7.proxy_cache_use_stale
如果后端服務器出現狀況,nginx是可以使用過期的響應緩存,這條指令用于定義何種情況下允許開啟此機制。
updating參數允許nginx在正在更新緩存的情況下使用過期的緩存來作為響應,這樣做可以是更新緩存數據時,訪問源服務器的次數最少,在植入新的緩存條目時,如果想使訪問源服務器的次數最少,可以使用proxy_cache_lock指令
8.proxy_cache_methods
定義能夠使用代理緩存的方法,默認get和head方法
9.proxy_hide_header
默認nginx不會傳遞Date,Server,X-Pad,X-Accel參數給客戶端,也可以自定義不傳遞給客戶端的響應報文中的參數,如果想要傳遞,可以使用proxy_post_header
10.proxy_connect_timeout
定義一個與后端服務器連接超時時間,默認60s,但超時時間不能超過75s
11.proxy_buffer_size
設置緩沖區大小為size,nginx從被代理的服務器讀取響應時,使用該緩沖區保存響應的開始部分,這部分通常包含一個小小的響應頭,該緩沖區大小默認等于proxy_buffers指令設置的一塊緩沖區大小,但他也可以被設置為更小
12.proxy_buffering
是否啟用緩沖功能
13.proxy_buffers
為每個連接設置緩沖區的數量為number,每塊緩沖區的大小為size,這些緩沖區 用于保存從被代理的服務器讀取的響應,每塊緩沖區默認等于一個內存頁的大小
14。proxy_busy_buffers_size
當開啟緩沖響應的功能以后,在沒有全部讀到響應的情況下,寫緩沖到達一定大小時,nginx一定會向客戶端發送響應,直到緩沖小于此值,這條指令用于設置此值。同時,剩余的緩沖區可以用于接收響應,如果需要,一部分內容將緩沖到臨時文件,該大小默認是proxy_buffer_size和proxy_buffers指令設置單塊緩沖大小的兩倍
nginx_http_headers_module模塊
向由代理服務器響應給客戶端的響應報文中添加自定義首部,或修改指定首部的值
1.add_header
添加自定義首部
add_header X-Via $server_addr 在響應報文首部中添加服務器端地址,可以是代理服務器
add_header X-Accel $server_name
2.expires
用于定義Expire或Cache-control首部的值
ngx_http_upstream_module
該模塊用來定義一組服務器,在對應的proxy_pass,fastcgi_pass,uwsgi_pass,scgi_pass和meecached_pass被引用到
1.upstream
定義后端服務器組,會引入一個新的上下文
它只能位于http中
2.server
在upstream上下文中server成員以及相關參數,Context:upstream
address的表示格式:
unix:/path/to/some_sock_file
IP[:port]
HOSTNAME[:port]
parameters:
weight=number 權重,默認為1
max_fails=number 失敗嘗試最大次數,超出此值,server將被標記為不可用
fail_timeout=time 定義服務器標記為不可用狀態的超時時長
max_conns 當前的服務器的最大并發連接數
backup 將服務器標記為備用,及所有服務器均不可用時,此服務器才啟用
down 將服務標記為不可用
3.least_conn
最少連接次數,當server擁有不同的權重時其為wlc;
4.ip_hash
源地址hash調度算法
5.hash
基于指定的key的hash表來實現對請求的調度,此處的key可以為直接文本,變量或二者的結合
作用:將請求分類,同一類請求將發往同一個upstream server
如:hash $request_uri consistent; 基于uri的hash,對于相同的uri,將發往同一個upstream server
hash $remote_addr; 基于請求的源地址hash,對于相同的地址的請求,將發往同一個upstream server
6.keepalive
為每個worker進程保留的空閑的長連接數量
7.least_time header|last_byte;
最短平均響應時長和最少連接
header:response_header;
last_byte:full_response;
僅 Nginx Plus有效
9.health_check
定義對后端主機的健康狀態監測機制,只能用于location上下文
可用參數:
interval=time:監測頻率,默認每個5秒鐘
fails=number:判斷服務器狀態轉為失敗需要檢測的次數
passes=number:判斷服務其狀態轉為成功需要檢測的次數
uri=uri:判斷其健康與否時使用的uri
match=name:基于指定的match來衡量監測結果的成敗
port=number:使用獨立的端口進行檢測
僅Nginx Plus有效
10.match
定義衡量某檢測結果是否為成功的衡量機制
專用指令:
status:期望的響應碼
status CODE
status ! CODE
…
header:基于響應報文的首部進行判斷
header HEADER=VALUE
header HEADER ~ VALUE
…
body:基于響應報文的內容進行判斷
body ~ "pattern"
body !~ "pattern"
僅Nginx Plus有效
ngx_stream_core_module
模擬反代基于tcp或udp的服務連接,即工作于傳輸層的反代或調度器
1.stream
定義stream相關的服務,它位于main的上下文中
stream {
upstream group {
server 172.18.18.123:80;
server 172.18.18.124:80;
}
server {
listen 10.1.0.1:2121
proxy_pass group;
}
}
2.listen
定義監聽的地址和端口
listen 127.0.0.1:12345;
listen *:12345;
listen 12345; 同*:12345
listen localhost:12345;
listen unix:/var/run/nginx.sock;
原創文章,作者:Stupid_L,如若轉載,請注明出處:http://www.www58058.com/55311