文档:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass
环境:
192.168.31.36 nginx反向代理
192.168.31.37 nginx,默认首页为index.html
通过浏览器访问:http://www.test.com/test/index.html 测试
情况一、
proxy_pass中不包含URI地址,那么location后的地址会传递给后端。
1、
location /test { proxy_pass http://192.168.31.37; }
因为后端没有test目录,所以访问结果为 404(后端日志 “GET /test/index.html HTTP/1.0” 404)
2、
location /test/ # location中以/结尾 { proxy_pass http://192.168.31.37; }
因为后端没有test目录,所以访问结果为 404(后端日志 “GET /test/index.html HTTP/1.0” 404)
情况二、
proxy_pass中指定了符合URI规范的地址,那么location后面匹配的地址字符被替换为proxy_pass中URI的地址字符
3、
location /test { proxy_pass http://192.168.31.37/; }
proxy_pass中的/替换为/test,实际访问 http://192.168.31.37//index.html,所以访问成功(后端日志 “GET //index.html HTTP/1.0” 200)
实际访问地址里出现//的原因是访问
/test/index.html 时,proxy_pass后面的/替换为/test,变成
//index.html
所以日志里也会看到两个//。
4、
location /test/ { proxy_pass http://192.168.31.37/; }
访问成功(后端日志 “GET /index.html HTTP/1.0” 200)
/ 替换 /test/ 后就变为 /index.html ,所以日志里只出现一个 /
原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/4998.html