Nginx no desovando a los trabajadores de ipv4 e ipv6

Editar Después de un LOT de solución de problemas el problema real resultó ser un punto y coma perdido después de la directiva server_name . nginx -t -c /etc/nginx/nginx.conf no lo estaba captando. Compruebe los errores tipocharts si alguna vez se encuentra con un caso similar a este.

La pregunta original sigue:

Estoy en el process de configurar un nuevo server basado en ubuntu 16.04 usando nginx 1.10.0.

El problema específico es que mientras mi nueva configuration coincide esencialmente con mi antigua configuration de nginx desde un server 13.10 de ubuntu usando nginx 1.4.4, nginx 1.10.0 solo está creando trabajadores ipv4 o ipv6, pero no ambos. Este comportamiento no está presente en el server anterior. No estoy seguro de qué más tratar en este momento.

He comprobado que mi installation de nginx fue construida con ipv6.

 nginx version: nginx/1.10.0 (Ubuntu) built with OpenSSL 1.0.2g-fips 1 Mar 2016 TLS SNI support enabled configure arguments: --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads 

A continuación se muestran mis configuraciones actuales para el nuevo server:

 # /etc/nginx/nginx.conf user www-data; worker_rlimit_nofile 30000; worker_processes 8; pid /run/nginx.pid; events { worker_connections 500000; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } 

Y tengo un único sitio habilitado en este momento para las testings. Tendré varios vhosts configurados eventualmente.

 # /etc/nginx/sites-enabled/blog server { server_name test.bloggyblog.com listen 80; listen [::]:80; root /usr/local/apps/blog; index index.php; location / { try_files $uri $uri/ =404; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 

Por último, lo extraño es si los trabajadores se vinculan a ipv4 o ipv6 depende totalmente del order en que se colocan las directivas listen . En los siguientes datos, he cambiado el order y he probado diferentes configuraciones varias veces. Después de cada cambio en /etc/nginx/sites-enabled/blog hice sudo service nginx stop; sudo service nginx start; sudo lsof -i; sudo service nginx stop; sudo service nginx start; sudo lsof -i; para get los datos.

También tenga en count que cambié el número de trabajadores a 8 después de realizar estos pasos. Sin embargo, mientras que el número de trabajadores aumentó, el mismo comportamiento fue visto donde todos los trabajadores eran ipv4 o ipv6.

 listen [::]:80; listen 80; nginx 27675 root 6u IPv4 204423 0t0 TCP *:http (LISTEN) nginx 27676 www-data 6u IPv4 204423 0t0 TCP *:http (LISTEN) listen 80; listen [::]:80; nginx 27747 root 6u IPv6 205134 0t0 TCP *:http (LISTEN) nginx 27748 www-data 6u IPv6 205134 0t0 TCP *:http (LISTEN) listen 80; listen [::]:80 default ipv6only=on; nginx 27819 root 6u IPv6 205849 0t0 TCP *:http (LISTEN) nginx 27820 www-data 6u IPv6 205849 0t0 TCP *:http (LISTEN) listen 80; listen [::]:80 default ipv6only=off; nginx 27885 root 6u IPv6 206495 0t0 TCP *:http (LISTEN) nginx 27886 www-data 6u IPv6 206495 0t0 TCP *:http (LISTEN) listen 80; listen [::]:80 default; nginx 27953 root 6u IPv6 207184 0t0 TCP *:http (LISTEN) nginx 27954 www-data 6u IPv6 207184 0t0 TCP *:http (LISTEN) 

2 Solutions collect form web for “Nginx no desovando a los trabajadores de ipv4 e ipv6”

Parece que su configuration pnetworkingeterminada para ipv6only es diferente. En la mayoría de los sistemas operativos, puede crear zócalos IPv6 que también acepten conexiones IPv4 para que sólo necesite un zócalo (una directiva de escucha).

Parece que en tu antiguo server utilizó ipv6only=on así que creaste un IPv4 y un socket IPv6. En su nuevo server el valor pnetworkingeterminado es ipv6only=off , lo que hace que el socket IPv6 escuche también en IPv4. Y eso crea un conflicto con el socket IPv4 independiente. Si elimina la línea de escucha de IPv4 probablemente funcionará con ambos protocolos.

Para hacer las cosas pnetworkingecibles, probablemente sea mejor establecer explícitamente el indicador ipv6only y usar uno de estos:

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

o

 listen [::]:80 ipv6only=off; 

Así que finalmente fue capaz de resolver esto, pero no de ninguna manera que he visto descrito en cualquier otro lugar.

Configure "net.ipv6.bindv6only = 1" en /etc/sysctl.conf y vuelvo a cargar a través de "sudo sysctl -p". A continuación, con la configuration en la directiva de server "listen 80; listen [::]: 80;" Ahora tengo mis trabajadores repartidos uniformemente entre ipv4 e ipv6 y ahora puedo conectar desde cualquier fuente ip.

Añadir a /etc/sysctl.conf y volver a cargar con "sudo sysctl -p":

 net.ipv6.bindv6only = 1 

Muestra nginx config:

 server { server_name test.bloggyblog.com listen 80; listen [::]:80; root /usr/local/apps/blog; index index.php; location / { try_files $uri $uri/ =404; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 

Recargar nginx

 sudo service nginx reload 

Entonces "sudo lsof -i"

 nginx 2096 www-data 6u IPv4 286321 0t0 TCP *:http (LISTEN) nginx 2096 www-data 7u IPv6 286322 0t0 TCP *:http (LISTEN) nginx 2097 www-data 6u IPv4 286321 0t0 TCP *:http (LISTEN) nginx 2097 www-data 7u IPv6 286322 0t0 TCP *:http (LISTEN) nginx 2098 www-data 6u IPv4 286321 0t0 TCP *:http (LISTEN) nginx 2098 www-data 7u IPv6 286322 0t0 TCP *:http (LISTEN) nginx 2099 www-data 6u IPv4 286321 0t0 TCP *:http (LISTEN) nginx 2099 www-data 7u IPv6 286322 0t0 TCP *:http (LISTEN) nginx 2100 www-data 6u IPv4 286321 0t0 TCP *:http (LISTEN) nginx 2100 www-data 7u IPv6 286322 0t0 TCP *:http (LISTEN) nginx 2101 www-data 6u IPv4 286321 0t0 TCP *:http (LISTEN) nginx 2101 www-data 7u IPv6 286322 0t0 TCP *:http (LISTEN) nginx 2102 www-data 6u IPv4 286321 0t0 TCP *:http (LISTEN) nginx 2102 www-data 7u IPv6 286322 0t0 TCP *:http (LISTEN) nginx 2103 www-data 6u IPv4 286321 0t0 TCP *:http (LISTEN) nginx 2103 www-data 7u IPv6 286322 0t0 TCP *:http (LISTEN) 

Confirme con "netstat -tlp"

 Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 *:http *:* LISTEN - tcp6 0 0 [::]:http [::]:* LISTEN - 
  • Docker y nginx upstream time de inactividad
  • nginx + php5-fpm gracioso reinicio: recarga en Ubuntu 14.04 LTS
  • Nginx & Passenger - fallado (11: Recurso no disponible temporalmente) mientras se conecta a aguas arriba
  • Encabezado personalizado directo de Nginx Reverse Proxy
  • Nginx como proxy smtp
  • Relacionar files que no están en un directory específico
  • Quitar nginx instalado de la fuente en Ubuntu
  • nginx Línea de request demasiado grande
  • serveres nginx y apache
  • Nginx: ¿Puedo almacenar en caching una URL que coincida con un patrón en una URL diferente?
  • SSL, Nginx, X509_check_private_key: error de desajuste de valores de key
  • Cómo hacer doble stack IPv4 / IPv6 con hosts virtuales en nginx 1.4
  • Rails + Nginx + Unicornio boost el tamaño de los datos de los correos (414 Request-URI Too Large)
  • El linux y los temas del servidor de Windows, como ubuntu, centos, apache, nginx, debian y consejos de red.