Nginx重复[::]:80错误的侦听选项


12

当我运行命令以测试我的配置时,出现一条错误消息,指出存在多个重复项[::]:80。在此之前,我有一个重复的多个默认服务器的问题。

当我遇到多个默认服务器的问题时,我的文件如下所示

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

root /usr/share/nginx/html;
index index.php index.html index.htm;

server_name munki;

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
    root /usr/share/nginx/html;
    }

location /report {
    try_files $uri $uri/ =404;
    }

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    }

location /munki_repo/ {
    alias /usr/local/munki_repo/;
    autoindex off;
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

为了解决该问题,我将配置更改为:

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

root /usr/share/nginx/html;
index index.php index.html index.htm;

server_name munki;

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
    root /usr/share/nginx/html;
    }

location /report {
    try_files $uri $uri/ =404;
    }

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    }

location /munki_repo/ {
    alias /usr/local/munki_repo/;
    autoindex off;
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

更改之后,我开始收到“ [::]:80的重复选项”错误。我不确定自己在做什么错。这是我第一次与Nginx合作。任何想法可能是什么问题?


请发布错误消息(nginx -t输出)。您正在运行哪个Nginx版本?ipv6only=on可能不再需要了。我的服务器块中有此文件:listen 80;listen [::]:80;运行正常。您还有其他服务器块吗?
simlev

那工作你建议的谢谢!永远不会想到这一点。
ztmcoder

Answers:


27

我是根据先前的评论创建答案的。

请发布错误消息(nginx -t输出),因为它可能包含一些有用的见解。

您正在运行哪个Nginx版本?ipv6only=on可能不再需要该选项,相反可能会产生问题。我的服务器块中有此文件,并且运行良好:

listen 80;
listen [::]:80;

您是否还有其他未发布的服务器块可能彼此冲突?


说明:让我们阅读最新的(1.13)nginx 文档

ipv6only=on|off
此参数(0.7.42)(通过IPV6_V6ONLYsocket选项)确定侦听通配符地址的IPv6套接字是[::] 仅接受IPv6连接还是接受IPv6和IPv4连接。默认情况下,此参数是打开的。启动时只能设置一次。

默认情况下此参数是打开的,意味着您不应使用ipv6only=on。它没有任何好处,并且可能会引起问题(请参阅下一点)。

只能设置一次,这意味着如果在配置中的任何位置(例如在不同的服务器块中)多次使用它,则会抛出错误:nginx: [emerg] duplicate listen options for [::]:80

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.