Sé que este tema existe en varias formas diferentes, pero tengo problemas para resolver mi problema. Si ejecuto service nginx restart
, nginx falla con el siguiente registro:
2015/03/14 08:36:42 [emerg] 9400#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2015/03/14 08:36:42 [emerg] 9400#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2015/03/14 08:36:42 [emerg] 9400#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2015/03/14 08:36:42 [emerg] 9400#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2015/03/14 08:36:42 [emerg] 9400#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2015/03/14 08:36:42 [emerg] 9400#0: still could not bind()
Solo tengo una configuración cargando sites-enabled
. Cuando corro:
$ grep -slir "listen 80"
$ sites-available/default
Muestra que la default
configuración tiene listen 80, pero eso no debería importar ya que no está en sites-enabled
.
$ ps ax -o pid,ppid,%cpu,vsz,wchan,command|egrep '(nginx|PID)'
PID PPID %CPU VSZ WCHAN COMMAND
9468 1 0.0 97188 sigsus nginx: master process /usr/sbin/nginx
9471 9468 0.0 97328 ep_pol nginx: worker process
9472 9468 0.0 97368 ep_pol nginx: worker process
9693 9641 0.0 9448 pipe_w egrep --color=auto (nginx|PID)
Aquí se netstat
muestra qué puertos se están utilizando:
$ netstat -tulpn
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1300/master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 9468/nginx
tcp 0 0 0.0.0.0:2812 0.0.0.0:* LISTEN 5980/monit
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1174/mysqld
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 1155/memcached
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 9468/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1113/sshd
tcp6 0 0 :::25 :::* LISTEN 1300/master
tcp6 0 0 :::9000 :::* LISTEN 9106/hhvm
tcp6 0 0 :::22 :::* LISTEN 1113/sshd
udp 0 0 127.0.0.1:11211 0.0.0.0:* 1155/memcached
Y aquí está mi configuración completa en sites-enabled
(la única allí):
server {
listen 443 ssl default_server;
limit_conn gulag 15;
server_name www.my-website.com;
access_log /home/my-website/logs/access.log;
error_log /home/my-website/logs/error.log info;
root /home/my-website/web;
index index.php index.html;
ssl_certificate /etc/nginx/ssl/my-website.com.chained.crt;
ssl_certificate_key /etc/nginx/ssl/my-website.com.key;
ssl_prefer_server_ciphers On;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
include /etc/nginx/includes/my-website_redirects_https.inc;
include /etc/nginx/includes/file_cache.inc;
include /etc/nginx/includes/wordpress.inc;
}
server {
listen 80;
server_name my-website.com www.my-website.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443;
server_name my-website.com;
return 301 https://www.$server_name$request_uri;
}
server {
server_name
some-other-website1.com www.some-other-website1.com
some-other-website2.com www.some-other-website2.com
some-other-website3.com www.some-other-website3.com
some-other-website4.com www.some-other-website4.com
some-other-website5.com www.some-other-website5.com
rewrite ^(.*)$ https://www.my-website.com/some/page/ permanent;
}
server {
server_name
some-other-website6.com www.some-other-website6.com
some-other-website7.com www.some-other-website7.com
some-other-website8.com www.some-other-website8.com
rewrite ^(.*)$ https://www.my-website.com/some/other/page/ permanent;
}
server {
server_name subdomain.my-website.com;
rewrite ^(.*)$ https://some.otherwebsite.com/ permanent;
}
server {
server_name
some-other-website9.com www.some-other-website9.com
some-other-website10.com www.some-other-website10.com
some-other-website11.com www.some-other-website11.com
rewrite ^(.*)$ https://www.my-website.com/ permanent;
}
Me pregunto si este error bind () está ocurriendo debido a mi configuración. ¿Alguna idea de lo que podría estar haciendo mal? Estoy usando nginx / 1.4.6 (Ubuntu). Cualquier ayuda sería muy apreciada.
Respuestas:
Intenta detener nginx:
Comprueba que el nginx sigue ejecutándose:
Y si aún se está ejecutando, elimine el proceso:
Verifique el estado de nginx, no se ejecutará:
Y luego haz un comienzo limpio:
Esto funcionó para mí después del mismo problema.
fuente
Según su
netstat
resultado, nginx todavía se está ejecutando en el puerto 80.Antes de intentar reiniciarlo, valide su configuración con
nginx -t
y corrija los errores.fuente
Probablemente soy el único lo suficientemente tonto como para cometer este error, pero accidentalmente descargué el paquete incorrecto (en
php
lugar dephp-fpm
), que instaló Apache 2 como una dependencia. Como se estaba ejecutando en el puerto 80, Nginx no pudo.Probablemente no sea un error muy común, pero supongo que la conclusión es verificar si accidentalmente tiene algo más en el puerto 80.
fuente
mod_php
en su lugar. Pero ahora que ha sido así durante años, no se puede cambiar sin romper el sistema de todos.apt-get remove apache2 && apt-get autoremove
)Tuve un problema similar.
Esto es lo que funcionó para mí:
sudo fuser -k 80/tcp
entonces:
service nginx restart
No sé la causa, pero mi respuesta se encontró aquí: https://easyengine.io/tutorials/nginx/troubleshooting/emerg-bind-failed-98-address-already-in-use/
Además, aquí está la historia de fondo de cómo / cuándo apareció este mensaje de error: https://serverfault.com/a/939888/399723
fuente