[Docker] Nginx の「このインターフェースでは提供されていません」という問題
多くのクラウドサービスプロバイダの VPS(例:Alibaba Cloud ECS / AWS EC2)では、デフォルトで IPv6 サポートが有効になっています。公式の Nginx コンテナを Docker で実行する際に、ネットワークの設定が適切でない場合、次のエラーが発生することがあります。
404 Site 172.17.0.x is not served on this interface
一般的には、サーバーが IPv6 と IPv4 の両方を同時に有効にしているため、必要に応じて 1 つを無効にする必要があります。両方を同時に有効にしている場合は、個別に処理する必要があります。
# IPv6 を使用し、暗黙的に IPv4 と下位互換性を持たせる
server{
listen [::]:80 default ipv6_only=on;
server_name _ ;
}
IPv6 と IPv4 を同時に有効にし、明示的に下位互換性を持たせる
# IPv6 と IPv4 を同時に有効にし、明示的に下位互換性を持たせる
server{
listen 80 default;
listen [::]:80 ipv6_only=on;
server_name _ ;
}
IPv4 のみを使用し、IPv6 との互換性は持たせない
# IPv4 のみを使用し、IPv6 との互換性は持たせない
server{
listen 80 default;
server_name _ ;
}
Docker の IPv6 サポートを無効にする(おすすめしません)
vi /etc/docker/daemon.json
/etc/docker/daemon.json に IPv6 を無効にする設定を追加します
{
...
ipv6='False',
......
}
404 Site 172.17.0.x is not served on this interface