Nginx的proxy_pass配置转发路径问题

[attach]154[/attach] Nginx配置proxy_pass转发的/路径问题:       在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/,当加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。
location ^~ /proxy_api/ 
   { 
       proxy_cache api_cache; 
       proxy_set_header Host api.afewbug.com; 
       proxy_pass http://api.afewbug.com/; 
   }
      如上面的配置,如果请求的url是http://your_domain/proxy_api/load.php  会被代理成http://api.afewbug.com/load.php       如果如下配置:
location ^~ /proxy_api/ 
   { 
       proxy_cache api_cache; 
       proxy_set_header Host api.afewbug.com; 
       proxy_pass http://api.afewbug.com; 
   }
     则会被代理到http://api.afewbug.com/proxy_api/load.php        当然,我们可以用如下的rewrite来实现/的功能:
location ^~ /proxy_api/ 
   { 
       proxy_cache api_cache; 
       proxy_set_header Host api.afewbug.com; 
       rewrite /proxy_api/(.+)$ /$1 break; 
       proxy_pass http://api.afewbug.com; 
   } 

0 个评论

要回复文章请先登录注册