您可以嘗試proxy_pass
而不是return
:
location ~ ^/bproxy/(.*) {
resolver 8.8.8.8; #set DNS resolver (by Google) to prevent "no resolver defined to resolve <domain>" error
proxy_pass http://$1;
}
但是要記住,如果遠程頁面包含像
<a href="some-path">Link</a>
的某條鏈路URL成爲
http://aproxy.com/bproxy/some-path
和
<a href="/some-path">Link</a>
成爲
http://aproxy.com/some-path
也是一樣的頁內的任何資源(圖片,JS,CSS等),所以網頁的行爲可能會被打破。
也許你應該擺脫/bproxy
路徑,並讓域aproxy.com
本身成爲代理。
更新:
您也可以嘗試使用server_name
指令:
server {
listen 127.0.0.1:80;
server_name aproxy.com;
#...
}
更新2 - 服務器代理到特定網站只(不支持HTTPS):
server {
listen 127.0.0.1:80;
server_name aproxy.com;
location/{
resolver 8.8.8.8;
proxy_pass http://stackoverflow.com;
}
}
因此,瀏覽到http://aproxy.com/questions
,你得到t他相同的結果http://stackoverflow.com/questions
注:
如果你想使這個代理是在本地網絡中可見,隨着服務器的本地IP取代127.0.0.1
(它可能是這樣的192.168.1.10
)
那怎麼我是這樣開始的,但除非我明確地告訴aproxy.com:80,nginx正在監聽0.0.0.0:80 – user340342
我能夠將它重定向到正確的URL,但是在該欄中的URL仍然是新網站(www.somewebsite.com),而不是aproxy.com/brpoxy/www.somewebsite.com – user340342
嘗試'聽n 127.0.0.1:80;'。那麼當你在我的文章中瀏覽具有配置的'http:// aproxy.com/bproxy/stackoverflow.com'時會發生什麼? – Curious