nginx反向代理proxy

    技术2022-07-12  88

    1、简单说明

    proxy_pass URL ,URL中是否含有URI,如果不包含,那么nginx服务器不会改变原地址的URI;如果包含了URI,则nginx服务器会使用新的URI替换原来的URI。来瞅瞅下面两个例子你就明白了。

    如图在端口为18011的服务器上有 location模块的/admin/url 路由。

    server { listen 18011; server_name location; location /admin/url{ proxy_pass http://127.0.0.1:18012; } }

    另一个服务器为18012有两个location模块路由。

    server { listen 18012; server_name location; location /admin/url { echo "this is /admin/url ."; } location /url/test { echo "this is /url/test ."; } }

    我们基于上面两个虚拟服务来进行测试。

    2、proxy_pass URL 中不加URI

    我们将18011的location模块的proxy_pass 代理到18012服务器.

    server { listen 18011; server_name location; location /admin/url{ proxy_pass http://127.0.0.1:18012; } }

    通过浏览器访问 http://192.168.60.128:18011/admin/url 地址: 查看nginx访问日志信息如图: 可以看到原始请求URI没有改变。

    3、proxy_pass URL 中加上URI

    我们在18011的location模块的proxy_pass URL中加入URI,并将其代理到18012服务器。

    server { listen 18011; server_name location; location /admin/url{ proxy_pass http://127.0.0.1:18012/url/test; } }

    通过浏览器访问同一地址: http://192.168.60.128:18011/admin/url 查看nginx的访问日志信息: 我们可以发现在proxy_pass URL中加入URI后原始请求的URI被替换成了proxy_pass URL中的URI。

    总结:在使用proxy_pass指令的时候,如果你想改变原地址中的URI,就只需在proxy_pass URL中加上URI。

    Processed: 0.008, SQL: 9