IPv6上のnginx名前ベースの仮想ホスト
私はnginxサーバーを使用して、ほぼ半ダースの異なるWebサイトにサービスを提供しています。IPv6ネイティブサポートを取得したLinode(Dallasデータセンター)で実行されており、ほとんどのサイトをデュアルスタック操作用に構成しようとしています。私は最初の1つを立ち上げて、次のようなIPv6のみのサブドメインを使用して実行しました: server { listen [::]:80 ipv6only=on; listen 80; server_name example.com ipv6.example.com; root /var/www/example.com/htdocs; #More stuff, including PHP, WordPress } これはうまく機能します-example.comはIPv4専用(今のところ)であり、ipv6.example.comはIPv6専用です(主にテスト目的であります)。汗をかくことなくping6 ipv6.example.com、できますwget ipv6.example.com-これは楽に痛みがありませんでした(nginxが仮想ホストをバインドする方法で「落とし穴」を見つけた後、ipv6only=on引数とデュアルlistenディレクティブが必要です)。 ただし、現在はstatic.example.comから始めて、これを拡張して他のドメインをサポートしようとしています。ただし、上記と同じアプローチ(引数listenを含むデュアルディレクティブipv6only=on)を使用すると、nginxの再起動時に次のエラーが発生します。 * Starting Nginx Server... nginx: [emerg] a duplicate listen options for [::]:80 in /etc/nginx/sites-enabled/example.com.conf:3 おそらく、nginxのIPv6のバインド方法では、名前ベースの仮想ホストが許可されていないようです。ホストから追加のIPv6アドレスを取得し(問題はありません)、IPv6でIPベースの仮想ホストを使用し、IPv4を介した名前ベースの仮想ホストを使用する必要がありますか?または、両方のスタックで構成の一貫性を維持できるソリューションがありませんか? 私はWorld IPv6 Dayに間に合うようにサイトをIPv6スタックに完全に載せることを望んでいましたが、これをすぐにクリアできない限り、準備ができていない可能性があります。実用的な観点からは大したことではありません-私のサイトはどれも、想像力の広がりによって「主要な組織」とはみなされませんが、オタクの信用を救うのに役立ちます! 追加して編集: @kolbyjackからの回答のおかげで、私は完全に機能するデュアルスタックWebサーバーを手に入れました。わかりやすくするために、私は彼が提供したソリューションを編集しているので、誰もが答えを明確に見ることができます。 デフォルトのcatchall vhostには次のlistenディレクティブがあります。 listen 80 default_server; listen 8080 …