nginx虚拟路径中proxy_pass对后端请求的影响-创新互联

假设nginx中的配置是这样的:

成都创新互联公司网站建设公司是一家服务多年做网站建设策划设计制作的公司,为广大用户提供了成都做网站、成都网站建设,成都网站设计,1元广告,成都做网站选成都创新互联公司,贴合企业需求,高性价比,满足客户不同层次的需求一站式服务欢迎致电。

server {

   listen 80;

   server_name x.x.x.x;

   . . . . . .

   location /subdir

  {

     proxy_pass http://y.y.y.y;

   }

}

那么,当用户请求http://x.x.x.x/subdir/other时,匹配到该区块,nginx反向代理到后端时会保留虚拟路径。nginx实际向后端发起的请求URL为http://y.y.y.y/subdir/other。

假设nginx中的配置是这样的:

server {

   listen 80;

   server_name x.x.x.x;

   . . . . . .

  location /subdir

  {

     proxy_pass http://y.y.y.y/;

   }

}

那么,当用户请求http://x.x.x.x/subdir/other时,匹配到该区块,由于proxy_pass中有指定后端URI路径,nginx代理请求到后端时不会保留虚拟路径。nginx实际向后端发起的请求URL为http://y.y.y.y//other。

假设nginx中的配置是这样的:

server {

   listen 80;

   server_name x.x.x.x;

   . . . . . .

  location /subdir

  {

     proxy_pass http://y.y.y.y/upstream_subdir;

   }

}

那么,当用户请求http://x.x.x.x/subdir/other时,匹配到该区块,由于proxy_pass中有指定后端URI路径,nginx代理请求到后端时不会保留虚拟路径。nginx实际向后端发起的请求URL为http://y.y.y.y/upstream_subdir/other。

综合上述三个示例可以发现,问题的关键就在于proxy_pass指令中是否有指定后端服务器的URI,这决定了nginx代理请求到后端时是否会保留location中的虚拟路径。

当将后端服务器写成upstream方式时,效果也是一样的。比如:

upstream backend {

   server y.y.y.y:80;

}

server {

   listen 80;

   server_name x.x.x.x;

   . . . . . .

  location /subdir

   {

     proxy_pass http://backend/upstream_subdir;

   }

}

当用户请求http://x.x.x.x/subdir/other时,nginx实际向后端发起的请求URL仍然为http://y.y.y.y/upstream_subdir/other。

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻标题:nginx虚拟路径中proxy_pass对后端请求的影响-创新互联
分享链接:http://scyanting.com/article/idhop.html