我已经为多个 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错误。
http://test.redzilla.11.75.65.21.xip.io/
我通过对 URL 进行硬编码来放置下面的位置标记。
location /redzilla {
proxy_pass http://test.redzilla.localhost:3000;
}
然后它仅适用于上述 URL。我想知道如何为单个位置标记内的多个 URL 创建代理通行证。 (请注意:URL 模式为 *.redzilla.localhost:3000 ,*(星号)代表任何单词)
如果您在 docker 中使用 nginx,请使用 docker network create ... 定义一个网络。属于该网络一部分的容器(通过 docker run 上的 --network 标志)将添加一个可用的 dns 解析器通过 127.0.0.11.
然后在您的 server {} 指令中添加“resolver 127.0.0.1;”
如果你确实需要动态域名那么你需要使用解析器。
但是,如果 proxy_pass 中有变量但域名中没有变量,最简单的解决方案是使用上游指令定义服务器。
参见 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;
}
}