Opciones de escucha duplicadas de Nginx para [::]: error 80


12

Cuando ejecuto el comando para probar mi configuración, aparece un error que dice que hay múltiples duplicados para [::]:80. Antes de eso tuve un problema con duplicar múltiples servidores predeterminados.

Cuando tuve el problema con varios servidores predeterminados, mi archivo se veía así

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

Para resolver ese problema, cambié la configuración a:

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

Después del cambio, comencé a recibir un error de "opciones duplicadas para [::]: 80". No estoy seguro de lo que estoy haciendo mal con esto. Esta es la primera vez que trabajo con Nginx. ¿Alguna idea de cuál podría ser el problema?


Por favor, publique el mensaje de error ( nginx -tsalida). ¿Qué versión de nginx estás ejecutando? ipv6only=onPuede que ya no sea necesario. Tengo esto en mi bloque de servidor: listen 80;listen [::]:80;y funciona bien. ¿Tienes algún otro bloque de servidor?
simlev

Eso funcionó lo que sugeriste ¡Gracias! Nunca hubiera pensado en eso.
ztmcoder

Respuestas:


27

Estoy creando una respuesta a partir de mi comentario anterior.

Publique el mensaje de error ( nginx -tsalida) ya que podría contener información útil.

¿Qué versión de nginx estás ejecutando? Es ipv6only=onposible que la opción ya no sea necesaria y, por el contrario, puede crear problemas. Tengo esto en mi bloque de servidor y funciona bien:

listen 80;
listen [::]:80;

¿Tiene algún otro bloque de servidor que no haya publicado que pueda entrar en conflicto?


Explicación: Vamos a leer la corriente (1,13) nginx documentación :

ipv6only=on|off
este parámetro (0.7.42) determina (mediante la IPV6_V6ONLYopción de socket) si un socket IPv6 que escucha en una dirección comodín [::] aceptará solo conexiones IPv6 o conexiones IPv6 e IPv4. Este parámetro está activado por defecto. Solo se puede configurar una vez al inicio.

Este parámetro está activado de manera predeterminada, lo que significa que no debe usarloipv6only=on. No sirve de nada y potencialmente puede crear problemas (ver el siguiente punto).

Sólo se puede establecer una vez que significa que si usted tiene más de una vez en cualquier lugar en su configuración (como en diferentes bloques de servidor), se generará un error:nginx: [emerg] duplicate listen options for [::]:80.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.