Java后端为我提供了几个接口,例如:
componentDidMount(){
let url ='/api/firstPage';
fetch(url, {
method: 'GET',
credentials: 'include',
header: {
'Content-Type': 'application/json'
},
})
.then(res => res.json())
.then(data => this.setState({
"response": data
}));
}
我是一名前端工程师,我必须在ajax中使用这些接口。因为我们将项目部署在同一服务器上,所以我需要使用nginx代理将那些ajax请求定向到Java服务。但是如您所见,接口以不同的路径开头,因此我在代码中以“ / api”作为前缀,并按如下方式配置nginx
@bp.route('api/firstPage', methods=("GET",))
def firstPage():
...
return cors_res(initData)
我的问题来了:
实际上,java服务获取请求路径:/ api / admin / login,而不是/ admin / login,因此它们无法处理该请求。我可以在Nginx中重写我的request_uri,以便Java获得不带/ api前缀的请求吗?
答案 0 :(得分:1)
您不需要为此进行任何重写。使用以下location
块:
location /api/ {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host 127.0.0.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
在proxy_pass
指令here中查看有关斜杠的更多信息。
答案 1 :(得分:0)
从different question粘贴并改编的副本,但是应该可以解决问题。
location /api {
rewrite ^/api(/.*)$ $1 last;
}