我有一个 NodeJS 应用程序,已在端口 40000 上启动。我安装了 Nginx,以便可以从各个端口反向代理多个应用程序。我有这个位置块:
location /deduplication/v1/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header x-api-key $http_x_api_key;
proxy_set_header XContent-Type $http_XContent-Type;
proxy_pass_request_headers on;
proxy_pass http://127.0.0.1:40000;
}
但是当我使用 curl 进行查询测试时,出现 404 错误。当我查看 NodeJS 应用程序的日志时,我看到它收到了以下内容:
"url":"/deduplication/v1/",
这是什么?我期望“/deduplication/v1/”被剥离,以便我得到:
/
如何让 Nginx 删除“/deduplication/v1/”?
答案1
proxy_pass http://127.0.0.1:40000/;
这样就可以了,请注意末尾的 /。
如果没有斜杠,nginx 会被告知将完整的 URI 透明地代理到给定的上游。