22 votes

Erreur de duplication des options d'écoute de Nginx pour [: :]:80

Lorsque j'exécute la commande pour tester ma configuration, j'obtiens une erreur disant qu'il y a plusieurs doublons pour [::]:80 . Avant cela, j'avais un problème de duplication de plusieurs serveurs par défaut.

Lorsque j'ai eu le problème avec plusieurs serveurs par défaut, mon fichier ressemblait à ceci

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

Pour résoudre ce problème, j'ai changé la configuration en :

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

Après le changement, j'ai commencé à recevoir une erreur "duplicate options for [: :]:80". Je ne suis pas sûr de ce que je fais de mal dans ce cas. C'est la première fois que je travaille avec Nginx. Avez-vous une idée de ce que pourrait être le problème ?

52voto

senia Points 22960

Je suis en train de créer une réponse à partir de mon commentaire précédent.

Veuillez afficher le message d'erreur ( nginx -t ) car il pourrait contenir des informations utiles.

Quelle version de nginx exécutez-vous ? Option ipv6only=on pourraient ne plus être nécessaires et, au contraire, créer potentiellement des problèmes. J'ai ceci dans mon bloc serveur et il fonctionne bien :

listen 80;
listen [::]:80;

Avez-vous d'autres blocs de serveurs que vous n'avez pas postés et qui pourraient entrer en conflit les uns avec les autres ?


Explication : lisons la version actuelle (1.13) de nginx documentation :

ipv6only=on|off
ce paramètre (0.7.42) détermine (par l'intermédiaire de l'option IPV6_V6ONLY option socket) si une socket IPv6 écoutant sur une adresse joker [::] acceptera uniquement les connexions IPv6 ou les connexions IPv6 et IPv4. Ce paramètre est activé par défaut. Il ne peut être défini qu'une seule fois au démarrage.

Ce paramètre est activé par défaut signifie que vous ne devez pas utiliser ipv6only=on . Cela ne sert à rien et peut potentiellement créer des problèmes (voir le point suivant).

Il ne peut être défini qu'une seule fois signifie que si vous l'avez plus d'une fois partout dans votre configuration (par exemple, dans différents blocs de serveurs), une erreur se produira : nginx: [emerg] duplicate listen options for [::]:80 .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X