proxy_pass:充當(dāng)代理服務(wù)器,轉(zhuǎn)發(fā)請(qǐng)求
proxy_redirect:修改301或者302轉(zhuǎn)發(fā)過程中的Location。默認(rèn)值為proxy_redirect default。
例:
location / {
proxy_pass http://192.168.8.46:8080/; #/結(jié)尾
#proxy_redirect default #此為默認(rèn)值,加不加都一樣。
}
這樣代理到其它機(jī)器的8080端口,訪問的時(shí)候都沒問題,
Location: http://192.168.8.46/haha4/,瀏覽器的url地址欄也是http://192.168.8.46/haha4/
若:
location / {
proxy_pass http://192.168.8.46:8080;#去掉/
proxy_redirect off #修改默認(rèn)值default為off
}
如果去掉最后的/以后,curl -I http://192.168.8.46/haha4 訪問
Location: http://192.168.8.46:8080/haha4/
瀏覽器訪問顯示的地址欄為http://192.168.8.46:8080/haha4/,(如果還是之前的,需要先刪緩存)
可以看到,真實(shí)的Location地址全部暴露出來的,這個(gè)時(shí)候就需要使用proxy_redirect修改這個(gè)Location
配置如下:
location / {
proxy_pass http://192.168.8.46:8080;
proxy_redirect http://192.168.8.46:8080/haha4/http://192.168.8.46/haha4/;
}
這樣,就能修改Location的地址,Location: http://192.168.8.46/haha4/,在瀏覽器里也是如此,就不會(huì)暴露端口號(hào)等信息,
當(dāng)然,你還可以把Location弄到其它網(wǎng)站上去,例如
proxy_redirect http://192.168.8.46:8080/haha4/http://www.douban.com/;
然后瀏覽器就跳過去了。
總結(jié):
一切幕后黑手就是
proxy_pass http://192.168.8.46:8080; 不加/結(jié)尾,只要把/加上,proxy_redirect 用默認(rèn)值就OK了。