天天看點

Nginx 路由轉發和反向代理 location 配置

Nginx 配置的三種方式

  • 第一種直接替換

    location

    比對部分
  • 第二種

    proxy_pass

    的目标位址,預設不帶

    /

    ,表示隻代理域名,

    url

    和參數部分不會變(把請求的

    path

    拼接到

    proxy_pass

    目标域名之後作為代理的URL)
  • 第三種

    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;
 }
           

繼續閱讀