¿Forzar el proxy inverso de nginx para resolver solo el registro AAAA (e ignorar el registro A) de un dominio?

¿Forzar el proxy inverso de nginx para resolver solo el registro AAAA (e ignorar el registro A) de un dominio?

Estoy intentando usar nginx en mi VPS ( mydoamin.comcon registro A y AAAA) con una dirección IP estática pública (tanto IPv4 como IPv6) para crear un proxy de IPv4 a IPv6 para que se pueda acceder a un servidor doméstico solo IPv6 desde redes IPv4 normales. El registro A del dominio apunta directamente al servidor nginx y el registro AAAA al servidor doméstico solo IPv6.

Mi bloque de servidor nginx actual se ve así:

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;
  }
}

Hasta ahora, el proxy funciona bastante bien y todo el tráfico a través de mydomain.com desde IPv4 será proxy mediante nginx, pero me pregunto si hay alguna manera deutilizar el dominio en lugar de la dirección IPv6Mientras proxy_passtanto, ¿nginx solo resolverá su registro AAAA? ¡Muchas gracias de antemano!

Respuesta1

Puedes hacer uso del ipv4=offparámetro delresolverdirectiva nginx.

Obliga a Nginx a ignorar los resultados de IPv4 del solucionador.

Un inconveniente es que se debe proporcionar una dirección IP de resolución a esta directiva: no puede simplemente deshabilitar IPv4 y mantener el solucionador ya configurado.

Supongamos que desea utilizar 8.8.8.8(DNS público de Google), puede utilizar resolver 8.8.8.8 ipv4=off;el FQDN original mydoamin.comcomo host de su URL ascendente:

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;
  }
}

Respuesta2

Nginx no resuelve, nombrado/bind lo hace. Nginx escucha y sirve.

listen 443 ssl http2;no escuchaAF_INET6dirección de la familia, listen [::]:443 ssl http2;lo hace.

información relacionada