IPv6上基于Nginx名称的虚拟主机
我有一台Nginx服务器,可提供将近六个不同的网站。它在刚刚获得IPv6本机支持的Linode(达拉斯数据中心)上运行,我正在尝试将我的大多数站点配置为双堆栈操作。我使用第一个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上使用基于名称的虚拟主机?还是我错过了一个解决方案,该解决方案将使我的配置在两个堆栈上保持一致? 我希望在世界IPv6日之前及时将我的站点完全放置在 IPv6堆栈上,但是除非我能迅速解决此问题,否则我可能还没有准备好。从任何实际角度来看都没什么大不了的-从我的想象力来看,我的网站都没有资格成为“主要组织”-但请帮我保存我的极客信誉! 编辑添加: 感谢@kolbyjack的回答,现在我有了一个功能齐全的双栈Web服务器。为了清楚起见,我正在编辑他给我的解决方案,以便每个人都可以清楚地看到答案是什么。 我的默认catchall虚拟主机具有以下listen指令: listen 80 default_server; listen 8080 default_server; listen …