【问题标题】:Nginx dynamic proxy_pass variables to .local zoneNginx 动态 proxy_pass 变量到 .local 区域
【发布时间】:2016-09-26 15:18:46
【问题描述】:

所以,我想在我的服务器上由 Avahi 控制的 .local 区域中将动态 proxy_pass 设置为 vagrant 机器。我有一个 nginx 虚拟主机配置:

server {
        listen 80;
        server_name     ~^(?<subdomain>.+)\.example\.com$;

        location / {

                resolver 127.0.0.1 valid=30s;

                proxy_set_header            Host $http_host;
                proxy_set_header            X-Real-IP $remote_addr;
                proxy_set_header            X-Forwarded-Proto $scheme;
                proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header            Host $host;

                proxy_pass                  http://$subdomain-example.local;
                proxy_connect_timeout       600;
                proxy_send_timeout          600;
                proxy_read_timeout          600;

                send_timeout                600;

        }
    }

Nginx 在 /var/log/nginx/error.log 中向我返回了一个错误:

2016/09/26 18:03:34 [error] 24401#24401: 
*1 no resolver defined to resolve test-example.local, 
client: 192.168.1.101, 
server: ~^(?<subdomain>.+)\.example\.com$, 
request: "GET / HTTP/1.1", 
host: "test.example.com"

但是,如果我手动将$subdomain 设置为“测试”,例如,它可以正常工作并传递给我真正想要的 test-example.local 机器。

如何让它真正充满活力?我应该在我的虚拟主机配置中进行哪些更改?

【问题讨论】:

    标签: nginx dns vagrant proxypass avahi


    【解决方案1】:

    当 NGINX 启动或重新加载其配置时,它会查询 DNS 服务器以解析域名。 NGINX 从操作系统配置文件 /etc/resolv.conf 中选择 DNS 服务器。 在proxy_pass指令中使用变量指定域名时,NGINX不会引用/etc/resolv.conf。

    您可以使用 proxy_pass 指令中的 IP 地址代替域名。

    阅读https://www.nginx.com/blog/dns-service-discovery-nginx-plus了解更多详情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 2012-06-22
      • 2022-11-03
      相关资源
      最近更新 更多