ngnix启动isse ipv4&ipv6

我试图得到我的第一个nginx服务器设置,并且无法设置ipv4ipv6

我有这个在我的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一个(但不是两个):

  1. 将第一个listen指令删除为冗余。 第二条指令将覆盖通过IPv4映射IPv6的IPv4和IPv6连接。 唯一的::ffff:203.0.113.25是你的日志会以映射forms显示IPv4地址,例如::ffff:203.0.113.25

  2. ipv6only=on添加到第二个listen指令。


请注意,从nginx 1.3.4开始, ipv6only=on现在是默认值,这使得您在以后的版本中需要原始configuration。 在此之前,默认是操作系统相关的。

你正在运行Linux?

可能必须做这样的事情,然后:

  listen [::]:80 ipv6only=on; listen 80;