Nginx 配置的三種方式
-
第一種直接替換
location匹配部分 -
第二種
proxy_pass的目標地址,默認不帶/,表示只代理域名,url和參數部分不會變(把請求的path拼接到proxy_pass目標域名之后作為代理的URL) -
第三種
proxy_pass的目標地址后增加/,則表示把path中location匹配成功的部分剪切掉之后再拼接到proxy_pass目標地址
location配置
location [ = | ~ | ~* | ^~ ] uri {...}
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;
}
