nginx proxy_pass 和 proxy_redirect

proxy_pass:充當代理服務器,轉發請求
proxy_redirect:修改301或者302轉發過程當中的Location。默認值爲proxy_redirect default。

例:
location / {
              proxy_pass http://192.168.8.46:8080/; #/結尾
              #proxy_redirect default #此爲默認值,加不加都同樣。
         }
這樣代理到其它機器的8080端口,訪問的時候都沒問題,
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 #修改默認值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/,(若是仍是以前的,須要先刪緩存)
能夠看到,真實的Location地址所有暴露出來的,這個時候就須要使用proxy_redirect修改這個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/,在瀏覽器裏也是如此,就不會暴露端口號等信息,
固然,你還能夠把Location弄到其它網站上去,例如
proxy_redirect http://192.168.8.46:8080/haha4/ http://www.douban.com/;
而後瀏覽器就跳過去了。


總結:
一切幕後黑手就是
 proxy_pass http://192.168.8.46:8080; 不加/結尾,只要把/加上,proxy_redirect 用默認值就OK了。瀏覽器

相關文章
相關標籤/搜索