首页 > 解决方案 > 如何转发以nginx中特定位置开头的所有路径?

问题描述

我想将所有以 /api/ (/api/* ??) 开头的路径转发到端口 1000,但实际配置要么只转发包含 "/api/" 的路径,而在 (/api/login 不是转发)

location /api/ {
                    proxy_pass http://localhost:1000/;
            }

或者它根本不起作用

location ~ ^/api/(.*)$ {
                    proxy_pass http://localhost:1000/;
            }

. 服务器被定义为休闲:

server {
            listen       80;
            keepalive_timeout    70;
            server_name  server_name;

            location / {
                    root /var/www/html;
                    index index.html;
            }
            location /api/ {
                    proxy_pass http://localhost:1000/;
            }
            }

我将不胜感激任何帮助,谢谢!

标签: regexapinginxproxylocation

解决方案


请注意:

location /api/ {
    proxy_pass http://localhost:1000/;
}

如果有请求/api/foo,那么您的 API 服务器会看到/foo

另一方面,如果(注意 没有斜杠proxy_pass)你使用:

location /api/ {
    proxy_pass http://localhost:1000;
}

然后对于相同的请求,您的 API 服务器将“按原样”接收请求:/api/foo

因此,请确保您使用正确的方法(斜杠/无斜杠),这取决于您的 API 服务器如何处理 URL(如果它被配置为处理/api/fooURL,那么您不应该在proxy_pass.


推荐阅读