引言

最近遇到了同一个二级域名下同时配置多个项目的需求,且后端服务需要统一匹配api前缀,所以通过nginx的location配置解决该问题,接下来就通过这篇文章给各位读者讲解nginx在反向代理时如何去掉前缀的方法。

问题描述

正常情况下:在nginx配置文件中中设置了 location /api/ 时 浏览器访问 /api/test 反向代理到后端服务后,后端服务接收到的url地址实际还是/api/test

需要实现的功能需求:访问url路径/api/test 经过nginx反向代理后,到达后端服务的实际url地址为/test。

问题解决

那么就需要按照如下方法进行修改,首先需要打开nginx的conf配置文件,或者打开你引入的单独子配置文件。

以下是原nginx配置文件中location部分的配置内容:

1
2
3
location  ^~/api/ {
proxy_pass http://localhost:12345;
}

将上述代码修改为如下nginx location代码:

1
2
3
location  ^~/api/ {
proxy_pass http://localhost:12345/;
}

需要注意和修改的是:在proxy_pass的最后加一个/即可。

修改完成后执行 nginx -s reload 刷新nginx配置文件,然后打开浏览器测试即可。

必须要执行nginx -s reload后才会生效,或者kill掉nginx进程重新执行也是可以的。

经过这样修改后,你的nginx在你使用浏览器访问/api/test后,实际访问的后端服务url就是localhost:12345/test了。