502 Bad Gateway - NGINX no resolver defined to resolve

4urapxun  于 2023-03-22  发布在  Nginx
关注(0)|答案(2)|浏览(276)

我已经为多个URL创建了代理传递。

listen 80;
    listen [::]:80;

    server_name ~^(.*)redzilla\.11\.75\.65\.21\.xip\.io$;

            location / {
                    set $instname $1;
                    proxy_pass http://${instname}redzilla.localhost:3000;
            }

当我使用Chrome调用此服务时,它触发了502错误。

**一个

我把下面的位置标记硬编码的网址。

location /redzilla {
                    proxy_pass http://test.redzilla.localhost:3000;
            }

然后它只适用于上述URL。我想知道如何在单个位置标签内为多个URL创建代理传递。(请注意:URL模式为 .redzilla.localhost:3000,(星星)表示任意单词)

zed5wv10

zed5wv101#

如果你在docker内部使用nginx,定义一个网络,使用docker network create....作为该网络一部分的容器(通过docker run上的--network标志),将添加一个dns解析器,可通过127.0.0.11获得。
然后在server {}指令中添加“resolver127.0.0.11;”

6ie5vjzr

6ie5vjzr2#

如果你真的需要动态域名,那么你需要使用解析器。
但是,如果您在proxy_pass中有变量,但在域名中没有变量,最简单的解决方案是使用upstream指令定义服务器。
参见https://nginx.org/en/docs/http/ngx_http_upstream_module.html
示例:

upstream backend {
    server backend.example.com;
}

server {
    location /(?<uri_match_prefix>.*)$ {
        proxy_pass http://backend/$uri_match_prefix$is_args$args;
    }
}

相关问题