主机未启用 IPv6 时 Nginx 未启动
Nginx not starting when IPv6 is not enabled in host machine
我目前正在配置一个能够处理 IPv6 地址的软件,我还配置了 Nginx docker 映像,以便它可以同时处理 IPv4 和 IPv6 地址。我遇到的问题是我不确定要部署软件的主机是否启用了IPv6。
问题是每当主机中未启用 IPv6 时,就会导致以下错误。
nginx: [emerg] socket() [::]:8080 failed (97: Address family not supported by protocol)
2018/01/23 10:53:08 [emerg] 1#1: socket() [::]:8080 failed (97: Address family not supported by protocol)
我想要实现的是,即使主机未启用 IPv6,nginx 也会忽略所有 IPv6 并直接转到 IPv4。我找到的一种解决方案是使用 nginx docker 存储库中讨论的环境变量 (envsubsts) 并使用 docker-compose 文件来设置端口和地址。但是,此解决方案需要手动更改 docker-compose 文件,具体取决于是否启用了 IPv6。
任何帮助或建议都可以。谢谢!
这是我的 nginx 配置中处理 IPv6 和 IPv4 的部分。
server {
listen [::]:8080 ssl ipv6only=off;
server_name localhost;
ssl on;
ssl_certificate /etc/nginx/cert.pem;
ssl_certificate_key /etc/nginx/key.pem;
...
...
}
}
我也尝试过将 IPv4 和 IPv6 分开,但问题仍然存在。
listen 8080 ssl;
listen [::]:8080 ssl ipv6only=on;
我创建的解决方案是创建两个不同的 nginx 配置文件。
(1) IPv6 和 IPv4 兼容并且
(2) 仅限 IPv4
然后我用 shell 脚本覆盖 Nginx 图像的默认入口点,该脚本首先 运行 使用 IPv6 和 IPv4 配置的 Nginx,然后如果 运行 失败,那么它会使用仅 IPv4 配置文件启动 Nginx。这样主机是否启用 IPv6 并不重要,因为它会优雅地降级到仅 IPv4 配置。
我目前正在配置一个能够处理 IPv6 地址的软件,我还配置了 Nginx docker 映像,以便它可以同时处理 IPv4 和 IPv6 地址。我遇到的问题是我不确定要部署软件的主机是否启用了IPv6。
问题是每当主机中未启用 IPv6 时,就会导致以下错误。
nginx: [emerg] socket() [::]:8080 failed (97: Address family not supported by protocol)
2018/01/23 10:53:08 [emerg] 1#1: socket() [::]:8080 failed (97: Address family not supported by protocol)
我想要实现的是,即使主机未启用 IPv6,nginx 也会忽略所有 IPv6 并直接转到 IPv4。我找到的一种解决方案是使用 nginx docker 存储库中讨论的环境变量 (envsubsts) 并使用 docker-compose 文件来设置端口和地址。但是,此解决方案需要手动更改 docker-compose 文件,具体取决于是否启用了 IPv6。
任何帮助或建议都可以。谢谢!
这是我的 nginx 配置中处理 IPv6 和 IPv4 的部分。
server {
listen [::]:8080 ssl ipv6only=off;
server_name localhost;
ssl on;
ssl_certificate /etc/nginx/cert.pem;
ssl_certificate_key /etc/nginx/key.pem;
...
...
}
}
我也尝试过将 IPv4 和 IPv6 分开,但问题仍然存在。
listen 8080 ssl;
listen [::]:8080 ssl ipv6only=on;
我创建的解决方案是创建两个不同的 nginx 配置文件。
(1) IPv6 和 IPv4 兼容并且
(2) 仅限 IPv4
然后我用 shell 脚本覆盖 Nginx 图像的默认入口点,该脚本首先 运行 使用 IPv6 和 IPv4 配置的 Nginx,然后如果 运行 失败,那么它会使用仅 IPv4 配置文件启动 Nginx。这样主机是否启用 IPv6 并不重要,因为它会优雅地降级到仅 IPv4 配置。