nginx proxy_pass详解

nginx proxy_pass详解


最近在使用nginx时遇到一个奇怪的问题,我想将以 /api开头的请求代理到 http:127.0.0.1/8080/xxxapi下,所以我在nginx中做了如下配置:

		location /api {
                proxy_pass      http://127.0.0.1:8080/xxxapi/;
        }

然后我请求http://127.0.0.1/xxxapi/xxxx直接给我报了404,好家伙,直接给我整蒙了,F12查看请求,发现请求变成了http://127.0.0.1/api//xxxx,于是就有了这篇文章。

废话不多说,为什么会变成这样呢?查阅了nginx官网以及一些其它资料后发现,这是nginx的转发规则导致的,这里以访问http://127.0.0.1/api/abc为例列出一些常见的情形:

序号 location proxy_pass 代理url
1 /api/ http://127.0.0.1:8080/ http://127.0.0.1:8080/abc
2 /api/ http://127.0.0.1:8080 http://127.0.0.1:8080/api/abc
3 /api/ http://127.0.0.1:8080/xxxapi/ http://127.0.0.1:8080/xxxapi/abc
4 /api/ http://127.0.0.1:8080/xxxapi http://127.0.0.1:8080/xxxapiabc
5 /api http://127.0.0.1:8080/ http://127.0.0.1:8080//abc
6 /api http://127.0.0.1:8080 http://127.0.0.1:8080/api/abc

因此,根据实际情况,一般使用第3种或者第6种写法,特此记录,以供参考!

你可能感兴趣的:(Linux,nginx,proxy_pass)