Ich weiß, dass dieses Thema in verschiedenen Formen existiert, aber ich habe Probleme, mein Problem zu lösen. Wenn ich ausgeführt werde service nginx restart
, schlägt nginx mit dem folgenden Protokoll fehl:
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()
Ich habe nur eine Konfiguration geladen sites-enabled
. Wenn ich renne:
$ grep -slir "listen 80"
$ sites-available/default
Es zeigt, dass die default
Konfiguration Listen 80 hat, aber das sollte keine Rolle spielen, da es nicht in ist 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)
Hier sehen Sie netstat
, welche Ports verwendet werden:
$ 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
Und hier ist meine komplette Konfiguration in sites-enabled
(die einzige dort):
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;
}
Ich frage mich, ob dieser bind () - Fehler aufgrund meiner Konfiguration auftritt. Irgendwelche Ideen, was ich falsch machen könnte? Ich benutze Nginx / 1.4.6 (Ubuntu). Jede Hilfe wäre sehr dankbar.
Antworten:
Versuchen Sie, Nginx zu stoppen:
Überprüfen Sie, ob der Nginx noch läuft:
Und wenn es noch läuft, beenden Sie den Prozess:
Überprüfen Sie den Nginx-Status, wird nicht ausgeführt:
Und dann einen sauberen Start machen:
Dies funktionierte für mich nach dem gleichen Problem.
quelle
Laut Ihrer
netstat
Ausgabe läuft nginx selbst immer noch auf Port 80.Bevor Sie versuchen, es neu zu starten, überprüfen Sie Ihre Konfiguration mit
nginx -t
und beheben Sie die Fehler.quelle
Ich bin wahrscheinlich der einzige, der dumm genug ist, diesen Fehler zu machen, aber ich habe versehentlich das falsche Paket (
php
anstelle vonphp-fpm
) heruntergeladen , mit dem Apache 2 als Abhängigkeit installiert wurde. Da es auf Port 80 lief, konnte Nginx nicht.Wahrscheinlich kein sehr häufiger Fehler, aber ich denke, der Imbiss besteht darin, zu überprüfen, ob Sie versehentlich etwas anderes an Port 80 haben.
quelle
mod_php
stattdessen benannt werden sollen. Aber jetzt, wo es seit Jahren so ist, kann es nicht geändert werden, ohne das System aller zu beschädigen.apt-get remove apache2 && apt-get autoremove
)Ich hatte ein ähnliches Problem.
Das hat bei mir funktioniert:
sudo fuser -k 80/tcp
dann:
service nginx restart
Ich weiß nicht, warum, aber meine Antwort wurde hier gefunden: https://easyengine.io/tutorials/nginx/troubleshooting/emerg-bind-failed-98-address-already-in-use/
Hier ist auch die Hintergrundgeschichte, wie / wann diese Fehlermeldung angezeigt wurde: https://serverfault.com/a/939888/399723
quelle