Nginx伺服器的反向 Proxyproxy_pass配置方法講解_nginx

來源:互聯網
上載者:User

就普通的反向 Proxy來講
Nginx的配置還是比較簡單的,如:

location ~ /* {proxy_pass http://127.0.0.1:8008;}

或者可以

location /{proxy_pass http://127.0.0.1:8008;}

Apache2的反向 Proxy的配置是:

ProxyPass /ysz/ http://localhost:8080/

然而,如果要配置一個相對複雜的反向 Proxy
Nginx相對Apache2就要麻煩一些了
比如,將url中以/wap/開頭的請求轉寄到後台對應的某台server上
可以再Nginx裡設定一個變數,來臨時儲存/wap/後面的路徑資訊

location ^~ /wap/{if ($request_uri ~ /wap/(\d+)/(.+)){set $bucketid $1;set $params $2;}proxy_pass http://mx$bucketid.test.com:6601/$params;}

也可以首先rewrite一下,然後再代理:

location ^~ /wap/{rewrite /wap/(\d+)/(.+) /$2?$args break;proxy_pass http://mx$1.test.com:6601;}

或者

location ~* /wap/(\d+)/(.+){proxy_pass http://mx$1.test.com:6601/$2?$args;}

注意上面最後的?$args,表明把原始url最後的get參數也給代理到後台
如果在proxy_pass中使用了變數(不管是主機名稱變數$1或後面的$2變數),則必須得加這段代碼
但如果pass_proxy後沒用任何變數,則不需要加,它預設會把所有的url都給代理到後台,如:

location ~* /wap/(\d+)/(.+){proxy_pass http://mx.test.com:6601;}

而Apache2相對就簡單多了:

ProxyPassMatch ^/wap/(.*)$  http://192.168.132.147/$1 if ($host ~* www.(.*)){      set $host_without_www $1;      rewrite (.*)$ http://$host_without_www/www$1;    }

url的/問題
在nginx中配置proxy_pass時,當在後面的url加上了/,相當於是絕對根路徑,則nginx不會把location中匹配的路徑部分代理走;如果沒有/,則會把匹配的路徑部分也給代理走。
 
下面四種情況分別用http://192.168.1.4/proxy/test.html 進行訪問。
第一種:

location /proxy/ {     proxy_pass http://127.0.0.1:81/;}

會被代理到http://127.0.0.1:81/test.html 這個url
 
第二咱(相對於第一種,最後少一個 /)

location /proxy/ {     proxy_pass http://127.0.0.1:81;}

會被代理到http://127.0.0.1:81/proxy/test.html 這個url
 
第三種:

location /proxy/ {     proxy_pass http://127.0.0.1:81/ftlynx/;}

會被代理到http://127.0.0.1:81/ftlynx/test.html 這個url。
 
第四種情況(相對於第三種,最後少一個 / ):

location /proxy/ {     proxy_pass http://127.0.0.1:81/ftlynx;}

會被代理到http://127.0.0.1:81/ftlynxtest.html 這個url
 
上面的結果都是本人結合記錄檔測試過的。從結果可以看出,應該說分為兩種情況才正確。即http://127.0.0.1:81 (上面的第二種) 這種和 http://127.0.0.1:81/.... (上面的第1,3,4種) 這種。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.