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; }