Den Nginx-Reverse-Proxy zwingen, nur den AAAA-Eintrag einer Domäne aufzulösen (und den A-Eintrag zu ignorieren)?

Den Nginx-Reverse-Proxy zwingen, nur den AAAA-Eintrag einer Domäne aufzulösen (und den A-Eintrag zu ignorieren)?

Ich versuche, nginx auf meinem VPS ( mydoamin.commit A- und AAAA-Eintrag) mit öffentlicher statischer IP-Adresse (sowohl IPv4 als auch IPv6) zu verwenden, um einen IPv4-zu-IPv6-Proxy zu erstellen, der einen Nur-IPv6-Heimserver von normalen IPv4-Netzwerken aus erreichbar macht. Der A-Eintrag der Domäne verweist direkt auf den nginx-Server und der AAAA-Eintrag auf den Nur-IPv6-Heimserver.

Mein aktueller Nginx-Serverblock sieht folgendermaßen aus:

server {
  listen 443 ssl http2;
  server_name mydomain.com;
  ssl_certificate /etc/letsencrypt/live/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/key.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/ca.pem;


  location / {
    proxy_pass https://[IPv6 address of the home server];
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

Bisher funktioniert der Proxy recht gut und der gesamte Datenverkehr über mydomain.com von IPv4 wird von nginx geproxied, aber ich frage mich, ob es eine Möglichkeit gibt,Verwenden Sie die Domäne anstelle der IPv6-Adressewährenddessen proxy_passlöst Nginx nur seinen AAAA-Eintrag auf? Vielen Dank im Voraus!

Antwort1

Sie können den ipv4=offParameter desresolverNginx-Richtlinie.

Es zwingt Nginx, IPv4-Ergebnisse vom Resolver zu ignorieren.

Ein Nachteil besteht darin, dass dieser Anweisung eine Resolver-IP-Adresse zugewiesen werden muss: Sie können nicht einfach IPv4 deaktivieren und den bereits konfigurierten Resolver beibehalten.

Angenommen, Sie möchten 8.8.8.8(Google Public DNS) verwenden. Dann können Sie resolver 8.8.8.8 ipv4=off;den ursprünglichen FQDN mydoamin.comals Host Ihrer Upstream-URL verwenden:

server {
  listen 443 ssl http2;
  server_name mydomain.com;
  ssl_certificate /etc/letsencrypt/live/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/key.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/ca.pem;


  location / {
    resolver 8.8.8.8 ipv4=off;
    proxy_pass https://mydoamin.com;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

Antwort2

Nginx führt keine Auflösung durch, das macht named/bind. Nginx hört zu und bedient.

listen 443 ssl http2;hört nicht zuAF_INET6Adresse Familie, listen [::]:443 ssl http2;tut.

verwandte Informationen