Forçar o proxy reverso nginx a resolver apenas o registro AAAA (e ignorar o registro A) de um domínio?

Forçar o proxy reverso nginx a resolver apenas o registro AAAA (e ignorar o registro A) de um domínio?

Estou tentando usar o nginx no meu VPS ( mydoamin.comcom registro A e AAAA) com endereço IP estático público (IPv4 e IPv6) para criar um proxy IPv4 para IPv6 para tornar um servidor doméstico somente IPv6 acessível a partir de redes IPv4 normais. O registro A do domínio aponta diretamente para o servidor nginx e o registro AAAA para o servidor doméstico somente IPv6.

Meu bloco de servidor nginx atual é assim:

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

Até agora, o proxy funciona muito bem e todo o tráfego via mydomain.com do IPv4 será proxy pelo nginx, mas estou me perguntando se existe uma maneira deuse o domínio em vez do endereço IPv6enquanto isso, proxy_passo nginx resolverá apenas seu registro AAAA? Muito obrigado antecipadamente!

Responder1

Você pode fazer uso do ipv4=offparâmetro doresolverDiretiva Nginx.

Força o Nginx a ignorar os resultados IPv4 do resolvedor.

Uma desvantagem é que um endereço IP do resolvedor deve ser fornecido para esta diretiva: você não pode apenas desabilitar o IPv4 e manter o resolvedor já configurado.

Digamos que você queira usar 8.8.8.8(DNS público do Google), você pode usar resolver 8.8.8.8 ipv4=off;o FQDN original mydoamin.comcomo host do seu URL upstream:

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

Responder2

Nginx não resolve, nomeado/bind faz isso. Nginx escuta e serve.

listen 443 ssl http2;não escutaAF_INET6abordar a família, listen [::]:443 ssl http2;faz.

informação relacionada