nginx 역방향 프록시가 도메인의 AAAA 레코드만 확인하고 A 레코드를 무시하도록 강제하시겠습니까?

nginx 역방향 프록시가 도메인의 AAAA 레코드만 확인하고 A 레코드를 무시하도록 강제하시겠습니까?

mydoamin.com일반 IPv4 네트워크에서 IPv6 전용 홈 서버에 연결할 수 있도록 IPv4-to-IPv6 프록시를 만들기 위해 공용 고정 IP 주소(IPv4 및 IPv6 모두)가 있는 VPS(A 및 AAAA 레코드 포함)에서 nginx를 사용하려고 합니다 . 도메인의 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;
  }
}

지금까지 프록시는 꽤 잘 작동하고 IPv4에서 mydomain.com을 통한 모든 트래픽은 nginx에 의해 프록시되지만 다음 방법이 있는지 궁금합니다.IPv6 주소 대신 도메인을 사용하십시오.그동안 proxy_passnginx는 AAAA 레코드만 해결합니까? 미리 감사드립니다!

답변1

ipv4=off의 매개변수를 활용할 수 있습니다.resolverNginx 지시어.

Nginx가 리졸버의 IPv4 결과를 무시하도록 강제합니다.

한 가지 단점은 이 지시문에 확인자 IP 주소를 제공해야 한다는 것입니다. IPv4를 비활성화하고 이미 구성된 확인자를 유지할 수만은 없습니다.

(Google Public DNS)를 사용하고 싶다면 원본 FQDN을 업스트림 URL의 호스트로 8.8.8.8사용할 수 있습니다 .resolver 8.8.8.8 ipv4=off;mydoamin.com

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는 해결하지 않으며, names/bind는 해결합니다. Nginx는 듣고 서비스합니다.

listen 443 ssl http2;듣지 않는다AF_INET6가족에게 주소를 알려주세요 listen [::]:443 ssl http2;.

관련 정보