Nginx 在查询字符串前自动添加尾部斜杠

Nginx automatically add trailing slash before query string

当我连接到: 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 访问您的服务。

location /api/ 与 API 不匹配,除非添加额外的 /(Nginx 通过重定向自动附加)。

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

由于您的服务只需要响应单个 URI,因此您可以使用完全匹配 location

例如:

location = /api {
    ...
}

详情见this document