該模塊允許將請求傳遞給另⼀一台服務器器
指令:
1 ,proxy_pass
設置代理理服務器器的協議和地址以及應映射位置的可
選 URI 。作為協議,可以指定“ http 或 https 。可
以將地址指定為域名或IP地址,以及可選端⼝口
Syntax: proxy_pass URL;
Default: —
Context: location, if in location,
limit_except
如果 proxy_pass 后⾯面指定了了 uri ,則其會
將 location 指定的 uri 給替換掉
location /bbs/ {
proxy_pass http://192.168.0.1/fo
rum/
}
客戶端訪問:http://www.a.com/bbs/
代理理服務器器:http://192.168.0.1/forum/
如果 proxy_pass 后⾯面沒有指定 uri ,則會
將 location 指定的 uri 附加 proxy_pass 后⾯面
location /bbs/ {
proxy_pass http://192.168.0.1 #
如果是附加,地址最后⾯面不不要寫"/"符號
}
客戶端訪問:http://www.a.com/bbs/
代理理服務器器:http://192.168.0.1/bbs/
動靜分離
server {
listen 80 ;
server_name www.a.com ;
root /data/web1/ ;
location / {
proxy_pass http://192.168.0.
1 ;
}
location ~*\.php$ {
proxy_pass http://192.168.0.
1 ;
}
}
2, proxy_set_header
設定發往后端主機的請求報⽂文的請求⾸首部的值
Syntax: proxy_set_header field
value;
Default:
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
Context: http, server, location
設置后端服務器器得到是真實的客服端IP,如果要在
后端服務器器⽇日志中看到客戶端IP,還需要調整后端
服務器器的⽇日志格式
location / {
proxy_pass http://192.168.0.1 ;
proxy_set_header X-Real-IP $remo
te_addr ; # "X-Real-IP"是⼀一個⾃自定義名
字
}
3, proxy_cache_path
設置緩存的路路徑和其他參數。緩存數據存儲在⽂文件
中,緩存中的⽂文件名是將MD5功能應⽤用於緩存鍵的
結果。該 levels 參數定義⾼高速緩存的層次結構級
別:從1到3,每個級別接受值1或2
Syntax: proxy_cache_path path
[levels=levels]
[use_temp_path=on|off]
keys_zone=name:size [inactive=time]
[max_size=size]
[manager_files=number]
[manager_sleep=time]
[manager_threshold=time]
[loader_files=number]
[loader_sleep=time]
[loader_threshold=time]
[purger=on|off] [purger_files=number]
[purger_sleep=time]
[purger_threshold=time];
Default: —
Context: http
proxy_cache_path /data/nginx/cache l
evels = 1:2 keys_zone = one:10m;
緩存中的⽂文件名如下所示:
/data/nginx/cache/c/29/b7f54b2df7773
722d382f4809d650 29c
4, proxy_cache
指明調⽤用的緩存,或關閉緩存機制
Syntax: proxy_cache zone | off;
Default: proxy_cache off;
Context: http, server, location
5, proxy_cache_key
定義緩存的鍵,也就對誰做MD5哈希來得到緩存⽂文
件的名
Syntax: proxy_cache_key string;
Default: proxy_cache_key
$scheme$proxy_host$request_uri;
Context: http, server, location
6, proxy_cache_valid
對特定響應碼的響應內容的緩存時⻓長定義
在 http{...} 中
Syntax: proxy_cache_valid [code ...]
time;
Default: —
Context: http, server, location
7, proxy_cache_use_stale
在被代理理的后端服務器器出現哪種情況下,可以真接
使⽤用過期的緩存響應客戶端
Syntax: proxy_cache_use_stale error |
timeout | invalid_header | updating |
http_500 | http_502 | http_503 |
http_504 | http_403 | http_404 |
http_429 | off ...;
Default: proxy_cache_use_stale off;
Context: http, server, location
8, proxy_cache_methods
對哪些客戶端請求⽅方法對應的響應進⾏行行緩存, GET
和 HEAD ⽅方法總是被緩存
Syntax: proxy_cache_methods GET |
HEAD | POST ...;
Default: proxy_cache_methods GET
HEAD;
Context: http, server, location
9, proxy_hide_header
默認nginx響應報⽂文時,不不傳遞后端服務器器的⾸首部字
段 Date , Server , X-Pad , X-Accel-等 ,⽤用於
隱藏后端服務器器特定的響應⾸首部
Syntax: proxy_hide_header field;
Default: —
Context: http, server, location
10, proxy_connect_timeout
定義與后端服務器器建⽴立連接的超時時⻓長,如超時會
出現 502 錯誤,默認為60s,⼀一般不不建議超出75s
Syntax: proxy_connect_timeout time;
Default: proxy_connect_timeout 60s;
Context: http, server, location
11, proxy_send_timeout
將請求發送給后端服務器器的超時時⻓長;默認為60s
Syntax: proxy_send_timeout time;
Default: proxy_send_timeout 60s;
Context: http, server, location
12, proxy_read_timeout
等待后端服務器器發送響應報⽂文的超時時⻓長, 默認為
60s
Syntax: proxy_read_timeout time;
Default: proxy_read_timeout 60s;
Context: http, server, location
定義緩存:
http{
proxy_cache_path /var/cache/ngin
x/proxy_cache levels=1:1:1 keys_zone
=proxycache:20m inactive=120s max_si
ze=1g;
}
調⽤用緩存功能:
proxy_cache proxycache;
proxy_cache_key $request_uri;
proxy_cache_valid 200 302 301 1h;
proxy_cache_valid any 1m;