私は、mydoamin.com
パブリック静的 IP アドレス (IPv4 と IPv6 の両方) を持つ VPS (A および AAAA レコード付き) で nginx を使用して、IPv4 から IPv6 へのプロキシを作成し、通常の IPv4 ネットワークから IPv6 のみのホーム サーバーにアクセスできるようにしようとしています。ドメインの 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 結果を無視するようになります。
1 つの欠点は、このディレクティブにリゾルバ IP アドレスを指定する必要があることです。つまり、IPv4 を無効にして、既に構成されているリゾルバを保持することはできません。
たとえば、(Google Public DNS) を使用する場合、アップストリーム URL のホストとして元の FQDN を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 は解決しませんが、named/bind が解決します。Nginx はリッスンしてサービスします。
listen 443 ssl http2;
聞かないAF_INET6アドレス ファミリは、listen [::]:443 ssl http2;
そうします。