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?


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.