有這樣一個需求:專案中跳到某個位址,但這個位址不想暴露給使用者。
因此我們想到要做一層代理,透過專案某個路徑直接用ngnix代理到這個位址。
查詢相關文件後,發現方案如下:
location /myBaidu { return 302 http://baidu.com; }
這個方案會直接跳到baidu,並且會改變域名,相當於直接location.href = 'baidu.com' ,顯然不適合我們的需求。
我們想要的效果是代理到百度,但瀏覽器的url框內還是/sparkMonitor,那就用proxy_pass
假設我們的網站網域為http://myorigin.com/
location /myBaidu { proxy_pass http://www.baidu.com/; }
這樣設定後就可以由http://myorigin.com/myBaidu直接存取到百度頁面,如下圖
當路徑加上/:相對路徑,此時相當於代理到http:// www.baidu.com/
location /myBaidu { proxy_pass http://www.baidu.com/; }
如果造訪http://myorigin.com/myBaidu/abc就相當於造訪http://www.baidu.com/abc
當路徑不加/:絕對路徑,,此時相當於代理到http://www.baidu.com/myBaidu
location /myBaidu { proxy_pass http://www.baidu.com; }
如果訪問http://myorigin.com/myBaidu/abc就相當於訪問http: //www.baidu.com/myBaidu/abc
當路徑加上/xxx/
location /myBaidu { proxy_pass http://www.baidu.com/xxx/; }
如果造訪http://myorigin.com/myBaidu/abc就相當於訪問http://www.baidu.com/xxx/abc
當路徑加上/xxx
location /myBaidu { proxy_pass http://www.baidu.com/xxx; }
#如果訪問http://myorigin.com/myBaidu/abc就相當於訪問http://www.baidu.com/xxxabc
以上是nginx的設定怎麼轉送到其他網站的詳細內容。更多資訊請關注PHP中文網其他相關文章!