Nginx 配置的三種方式
- 第一種直接替換
比對部分location
- 第二種
的目标位址,預設不帶proxy_pass
,表示隻代理域名,/
和參數部分不會變(把請求的url
拼接到path
目标域名之後作為代理的URL)proxy_pass
- 第三種
的目标位址後增加proxy_pass
,則表示把/
中path
比對成功的部分剪切掉之後再拼接到location
目标位址proxy_pass
location配置
uri前面的方括号中的内容是可選項,解釋如下:
"="
:用于标準uri前,要求請求字元串與uri嚴格比對,一旦比對成功則停止
"~"
:用于正則uri前,并且區分大小寫
"~*"
:用于正則uri前,但不區分大小寫
"^~"
:用于标準uri前,要求Nginx找到辨別uri和請求字元串比對度最高的location後,立即使用此location處理請求,而不再使用location塊中的正則uri和請求字元串做比對
例子
例如下面的配置示範第三種配置方案,當我們通路
http://44.179.118.54:80/shop/xxx
的時候
通路的時候 Nginx 會把
/shop/
截取掉然後把後面的
path
拼接到
proxy_pass
上
那麼我們實際通路的就是:
http://44.179.118.54:8007/xxx
這個服務
# shop-service
# 反向代理shop-service服務
location ^~ /shop/ {
#proxy_redirect off;
#proxy_connect_timeout 60;
#proxy_read_timeout 60;
#proxy_send_timeout 60;
#proxy_buffer_size 4k;
#proxy_buffers 4 32k;
#proxy_busy_buffers_size 64k;
#proxy_temp_file_write_size 64k;
#proxy_max_temp_file_size 128m;
proxy_pass http://44.179.118.54:8007/;
#proxy_set_header X-Real-IP $remote_addr;
#root /var/www/test/user/
#index index.html
#proxy_pass https://www.baidu.com;
}