6

proxy_passそのため、Avahi によって制御される .local ゾーン内のサーバー上の 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 マシンに渡されます。

それを本当に動的にする方法は?仮想ホスト構成で何を変更する必要がありますか?

4

1 に答える 1

1

NGINX が構成を起動またはリロードすると、DNS サーバーにクエリを実行してドメイン名を解決します。NGINX は、OS 構成ファイル /etc/resolv.conf から DNS サーバーを選択します。proxy_pass ディレクティブで変数を使用してドメイン名を指定すると、NGINX は /etc/resolv.conf を参照しません。

ドメイン名の代わりに、proxy_pass ディレクティブで IP アドレスを使用できます。

詳細については、 https://www.nginx.com/blog/dns-service-discovery-nginx-plusを参照してください。

于 2022-01-08T21:01:34.537 に答える