Nginx反向代理的目錄訪問問題
阿新 • • 發佈:2018-12-19
從昨天就開始糾結了,在做實驗的時候,遇到目錄訪問的問題,如下
前端nginx vhost的設定如下,代理訪問後端的192.168.0.37
server { listen 80; server_name www.proxy.com; index index.php index.html index.htm; location /test/ { proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_pass http://192.168.0.37; proxy_set_header Host 192.168.0.37; proxy_set_header X-Forwarded-For $remote_addr; proxy_redirect http://192.168.0.37/test/ /test/; } access_log /data/logs/weblog/proxy_server.access.log;}
後端的192.168.0.37在根目錄下是有test目錄的,該目錄下有個index檔案,內容為“192.168.0.37 proxy test OK!”
現在的問題是如果在訪問www.proxy.com/test/的時候是可以訪問的,如下
[[email protected]_node ~]# curl -I http://www.proxy.com/test/HTTP/1.1 200 OKServer: nginxDate: Wed, 24 Apr 2013 04:22:40 GMTContent-Type: text/html; charset=utf-8Content-Length: 28Connection: keep-aliveLast-Modified: Wed, 24 Apr 2013 03:09:13 GMTAccept-Ranges: bytes
但是如果訪問www.proxy.com/test的話就會301
[[email protected]_node ~]# curl -I http://www.proxy.com/testHTTP/1.1 301 Moved PermanentlyServer: nginxDate: Wed, 24 Apr 2013 04:25:01 GMTContent-Type: text/htmlContent-Length: 178Location: http://www.proxy.com/test/Connection: keep-alive
我剛開始以為是我前端的proxy_redirect設定有問題,後來修改proxy_redirect多次,均無法達到要求,最後突發奇想,把前端的nginx設成了這樣
server { listen 80; server_name www.proxy.com; index index.php index.html index.htm; location /test { proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_pass http://192.168.0.37/test/; proxy_set_header Host 192.168.0.37; proxy_set_header X-Forwarded-For $remote_addr; #proxy_redirect http://192.168.0.37/test/ /test/; } location / { proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_pass http://192.168.0.37/; proxy_set_header Host 192.168.0.37; proxy_set_header X-Forwarded-For $remote_addr; } access_log /data/logs/weblog/proxy_server.access.log;}
這樣的話,訪問www.proxy.com/test就沒問題了
[[email protected]_node vhosts]# curl www.proxy.com/test192.168.0.37 proxy test OK!