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_pass
nginx는 AAAA 레코드만 해결합니까? 미리 감사드립니다!
답변1
ipv4=off
의 매개변수를 활용할 수 있습니다.resolver
Nginx 지시어.
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;
.