Заставить обратный прокси-сервер nginx разрешать только запись AAAA (и игнорировать запись A) домена?

Заставить обратный прокси-сервер nginx разрешать только запись AAAA (и игнорировать запись A) домена?

Я пытаюсь использовать nginx на моем VPS ( mydoamin.comс записями A и AAAA) с публичным статическим IP-адресом (как IPv4, так и IPv6) для создания прокси-сервера IPv4-to-IPv6, чтобы сделать домашний сервер только для IPv6 доступным из обычных сетей IPv4. Запись A домена указывает на сервер nginx, а запись AAAA — на домашний сервер только для IPv6 напрямую.

Мой текущий блок сервера nginx выглядит так:

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

Пока что прокси работает довольно хорошо, и весь трафик через mydomain.com с IPv4 будет проксироваться nginx, но мне интересно, есть ли способиспользуйте домен вместо адреса IPv6в proxy_passто время как nginx будет разрешать только свою запись AAAA? Большое спасибо заранее!

решение1

Вы можете использовать ipv4=offпараметрresolverДиректива Nginx.

Он заставляет Nginx игнорировать результаты IPv4 от резолвера.

Одним из недостатков является то, что в этой директиве необходимо указать IP-адрес преобразователя: вы не можете просто отключить IPv4 и сохранить уже настроенный преобразователь.

Допустим, вы хотите использовать 8.8.8.8(Google Public DNS), вы можете использовать resolver 8.8.8.8 ipv4=off;исходное полное доменное имя mydoamin.comв качестве хоста вашего URL-адреса восходящего потока:

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

решение2

Nginx не разрешает, это делает named/bind. Nginx слушает и обслуживает.

listen 443 ssl http2;не слушаетAF_INET6адрес семьи, listen [::]:443 ssl http2;делает.

Связанный контент