我试图得到我的第一个nginx服务器设置,并且无法设置ipv4和ipv6。
我有这个在我的configuration文件的顶部(这是configuration文件中唯一的服务器块):
server { # Listen for requests on these ports listen 80 default; listen [::]:80 default_server; }
这是我尝试启动ngnix时得到的错误:
* Restarting nginx nginx nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) nginx: [emerg] still could not bind()
任何帮助表示赞赏。
您试图绑定到IPv4两次。
listen 80 default; listen [::]:80 default_server;
默认情况下(在Linux上),第二个listen伪指令绑定到IPv4和IPv6,除非您明确请求使用ipv6only选项仅绑定到IPv6。
有两种方法可以解决这个问题。 select一个(但不是两个):
将第一个listen指令删除为冗余。 第二条指令将覆盖通过IPv4映射IPv6的IPv4和IPv6连接。 唯一的::ffff:203.0.113.25是你的日志会以映射forms显示IPv4地址,例如::ffff:203.0.113.25 。
将ipv6only=on添加到第二个listen指令。
请注意,从nginx 1.3.4开始, ipv6only=on现在是默认值,这使得您在以后的版本中需要原始configuration。 在此之前,默认是操作系统相关的。
你正在运行Linux?
可能必须做这样的事情,然后:
listen [::]:80 ipv6only=on; listen 80;