Nginx doppelte Listenoptionen für [::]: 80 Fehler

12

Wenn ich den Befehl zum Testen meiner Konfiguration ausführe, wird eine Fehlermeldung angezeigt, dass mehrere Duplikate für vorhanden sind [::]:80. Vorher hatte ich ein Problem mit doppelten mehreren Standardservern.

Als ich das Problem mit mehreren Standardservern hatte, sah meine Datei so aus

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;
    }
}

Um dieses Problem zu beheben, habe ich die Konfiguration geändert in:

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;
    }
}

Nach der Änderung bekam ich den Fehler "doppelte Optionen für [::]: 80". Ich bin mir nicht sicher, was ich damit falsch mache. Ich arbeite zum ersten Mal mit Nginx. Irgendwelche Ideen, was das Problem sein könnte?

ztmcoder
quelle
Bitte posten Sie die Fehlermeldung ( nginx -tAusgabe). Welche Nginx-Version verwenden Sie? ipv6only=onwird möglicherweise nicht mehr benötigt. Ich habe dies in meinem Serverblock: listen 80;listen [::]:80;und es läuft gut. Haben Sie andere Serverblöcke?
Simlev
Das hat funktioniert, was Sie vorgeschlagen haben. Danke! Daran hätte ich nie gedacht.
Ztmcoder

Antworten:

26

Ich erstelle eine Antwort aus meinem früheren Kommentar.

Bitte posten Sie die Fehlermeldung ( nginx -tAusgabe), da diese nützliche Erkenntnisse enthalten könnte.

Welche Nginx-Version verwenden Sie? Die Option wird ipv6only=onmöglicherweise nicht mehr benötigt und kann im Gegenteil zu Problemen führen. Ich habe dies in meinem Serverblock und es läuft gut:

listen 80;
listen [::]:80;

Haben Sie andere Serverblöcke, die Sie nicht gepostet haben und die möglicherweise miteinander in Konflikt stehen könnten?


Erläuterung: Lesen wir die aktuelle (1.13) Nginx- Dokumentation :

ipv6only=on|off
Dieser Parameter (0.7.42) bestimmt (über die IPV6_V6ONLYSocket-Option), ob ein IPv6-Socket, der eine Platzhalteradresse abhört [::] , nur IPv6-Verbindungen oder sowohl IPv6- als auch IPv4-Verbindungen akzeptiert. Dieser Parameter ist standardmäßig aktiviert. Sie kann beim Start nur einmal eingestellt werden.

Dieser Parameter ist standardmäßig aktiviert und sollte nicht verwendet werdenipv6only=on. Es nützt nichts und kann möglicherweise Probleme verursachen (siehe nächster Punkt).

Es kann nur einmal festgelegt werden , bedeutetdasswenn Sie es mehr als einmal überall in Ihrer Konfiguration (wie in anderen ServerBlöcken), wird es einen Fehler aus:nginx: [emerg] duplicate listen options for [::]:80.

simlev
quelle