Nginx会在查询字符串之前自动添加尾随斜杠

Nginx会在查询字符串之前自动添加尾随斜杠,nginx,nginx-reverse-proxy,Nginx,Nginx Reverse Proxy,当我连接到: http://localhost/api?foo=bar Nginx将我重定向到: http://localhost/api/?foo=bar 因此,我的支持没有正确响应 我尝试将位置更改为location/api,然后问题得到解决,但它也匹配类似http://localhost/apiapi?foo=bar我不想这样 这是我的配置: server { listen 80; server_name localhost; location / {

当我连接到:
http://localhost/api?foo=bar

Nginx将我重定向到:
http://localhost/api/?foo=bar

因此,我的支持没有正确响应

我尝试将位置更改为
location/api
,然后问题得到解决,但它也匹配类似
http://localhost/apiapi?foo=bar
我不想这样

这是我的配置:

server {
    listen 80;
    server_name localhost;

    location / {
        root /usr/share/nginx/html;
        index index.html;
    }

    location /api/ {
        proxy_pass http://127.0.0.1:3000;
    }
}

您想使用URI
/api
访问您的服务

位置/api/
与该api不匹配,除非添加了额外的
/
(Nginx通过重定向自动附加该api)

location/api
还匹配以相同三个字符开头的任何URI

由于您的服务只需要响应单个URI,因此您可以使用精确匹配的
位置

例如:

location = /api {
    ...
}

有关详细信息,请参阅。

您想使用URI
/api
访问您的服务

位置/api/
与该api不匹配,除非添加了额外的
/
(Nginx通过重定向自动附加该api)

location/api
还匹配以相同三个字符开头的任何URI

由于您的服务只需要响应单个URI,因此您可以使用精确匹配的
位置

例如:

location = /api {
    ...
}

有关详细信息,请参阅。

请尝试:
location=/api{…}
@RichardSmith谢谢!它就像一个charmTry:
location=/api{…}
@RichardSmith谢谢!它起了很大的作用