Nginx反向代理重写URL的实现方案
需求
nginx 服务器代理前端项目,并且反代后端服务器。开发时使用没有什么问题,部署后存在同样请求根地址的情况,输入nginx的地址localhost:3000能够访问到前端地址,但是去调用后端接口就会出现报错,看来我对nginx还掌握的不够,发现是调用后端接口的时候每次请求中都会多/api/,但是后端接口路径并没有多这个/api/,最后通过重写url解决问题。
一般反向代理
一般会定义一个统一前缀,比如:api,则配置如下
server {
listen 80;
server_name default;
location /api/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://example.com;
}
}则请求到 http:localhost/api/findOne时,会转发到 http://example.com/api/findOne。
设置proxy_pass即可。请求只会替换域名,不会将/api/也替换掉。
我现在想要访问http:localhost/api/findOne转发到http://example.com/findOne,去掉/api/则可按照如下两种配置。
解决方案
方案一 使用 rewrite,注意到 proxy_pass结尾没有 /, rewrite 重写了 url,则最终的请求为http://example.com/findOne
server {
listen 80;
server_name default;
location /api/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://example.com;
}
}方案二 在 proxy_pass 后增加 / 则 nginx 会将/api之后的内容拼接到 proxy_pass 之后。
server {
listen 80;
server_name default;
location /api/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://example.com/;
}
}到此这篇关于Nginx反向代理重写URL的实现方案的文章就介绍到这了,更多相关Nginx反向代理重写URL内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Nginx配置React项目Url后直接输入路由路径时报404问题的解决
这篇文章主要给大家介绍了关于Nginx配置React项目Url后面直接输入路由路径时报404问题的解决方法,文中通过示例代码将解决的方法介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。2017-11-11
Nginx访问日志access_log配置及信息详解(推荐)
当你设置日志级别成debug,如果你在调试一个在线的高流量网站的话,你的错误日志可能会记录每个请求的很多消息,这样会变得毫无意义,下面小编给大家介绍Nginx访问日志access_log配置及信息详解,感兴趣的朋友跟随小编一起看看吧2024-04-04
Nginx+keepalived实现七层的负载均衡的高可用(最新解决方案)
这篇文章主要介绍了Nginx+keepalived实现七层的负载均衡的高可用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧2024-03-03


最新评论