nginx - 将位置重写为服务器根目录

ET-*_*-CS 4 nginx

我有这个nginx.confnginx 配置:

http {    
    ...

    upstream app_servers {
        server admin;
    }
    upstream status_servers {
        server status:5000;
    }

    # Configuration for the server
    server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        location / {
            proxy_pass         http://app_servers;
            proxy_redirect     off;
            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-Forwarded-Host $server_name;
        }
        location /api {
            proxy_pass         http://api_servers;
            proxy_redirect     off;
            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-Forwarded-Host $server_name;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
  • /是服务器到一台服务器,并且
  • /api到另一个 api 服务器。

问题出在第二个(api 服务器)。

当我希望它们到达 api 服务器的根目录时,调用正在到达/api/**(基本上在调用 api 服务器时删除 /api)。

如此呼唤

  • /api -> 将到达/api服务器,并调用
  • /api/foo-> 将到达/fooapi 服务器。

我想我正在寻找某种重写规则(?)

我已经尝试过该/api位置内部:

rewrite ^/api(.*) /$1 last;
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。

任何形式的帮助将不胜感激!

ET-*_*-CS 5

使用解决了它rewrite ^/api(/.*)$ $1 break;

但我不能只使用/api- 它必须是/api/(带有尾随/

对我来说,这很好,也很有趣,如果有人知道如何获得支持的话/api