it-swarm.com.de

nginx-Fehler: (99: Angeforderte Adresse kann nicht zugewiesen werden)

Ich verwende Ubuntu Hardy 8.04 und Nginx 0.7.65 und wenn ich versuche, meinen Nginx-Server zu starten:

$ Sudo /etc/init.d/nginx start

Ich erhalte folgende Fehlermeldung:

Starting nginx: [emerg]: bind() to IP failed (99: Cannot assign requested address)

dabei ist "IP" ein Platzhalter für meine IP-Adresse. Weiß jemand, warum dieser Fehler auftreten könnte? Dies läuft auf EC2.

Meine nginx.conf-Datei sieht folgendermaßen aus:

user www-data www-data;
worker_processes  4;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    access_log /usr/local/nginx/logs/access.log;

    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay         on;

    keepalive_timeout  3;

    gzip  on;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_types  text/plain text/css application/x-javascript text/xml application/xml
    application/xml+rss text/javascript;

    include /usr/local/nginx/sites-enabled/*;

}

und mein /usr/local/nginx/sites-enabled/example.com sieht folgendermaßen aus:

server {

        listen   IP:80;
        server_name  example.com;
        rewrite ^/(.*) https://example.com/$1 permanent;

       }

server {

        listen   IP:443 default ssl;

        ssl         on;
        ssl_certificate     /etc/ssl/certs/myssl.crt;
        ssl_certificate_key /etc/ssl/private/myssl.key;

        ssl_protocols       SSLv3 TLSv1;
        ssl_ciphers ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP;

        server_name example.com;

        access_log /home/example/example.com/log/access.log;
        error_log /home/example/example.com/log/error.log;

        }
21
k-g-f

Bei Amazon EC2 und elastischen IPs kennt der Server seine IP-Adresse nicht wie bei den meisten anderen Servern. 

Sie müssen Ihrem Linux also mitteilen, dass Prozesse an die nicht lokale Adresse gebunden werden dürfen. Fügen Sie einfach die folgende Zeile in die /etc/sysctl.conf-Datei ein:

# allow processes to bind to the non-local address
# (necessary for Apache/nginx in Amazon EC2)
net.ipv4.ip_nonlocal_bind = 1

und laden Sie dann Ihre sysctl.conf neu:

$ sysctl -p /etc/sysctl.conf

was bei Neustarts in Ordnung sein wird.

51
kirpit

Um zu vermeiden, die IP-Adresse in der Konfiguration fest zu kodieren, führen Sie folgende Schritte aus

listen *:80
8
Till

Wie oben erwähnt, sollten Sie Linux-Prozessen erlauben, sich an eine lokale IP-Adresse zu binden:

nano /etc/sysctl.conf

# allow processes to bind to the non-local address
net.ipv4.ip_nonlocal_bind = 1

sysctl -p /etc/sysctl.conf

Dann möchten Sie die private IP-Adresse hinzufügen, die Ihrer elastischen IP zugeordnet ist, und diese Ihrer Site-Konfiguration hinzufügen:

nano /etc/nginx/sites-available/example.com

Nginx neu laden:

service nginx reload

Alles erledigt!

2
user2035677

Wenn Sie Network Manager verwenden, müssen Sie warten, bis die Netzwerkschnittstelle aktiviert ist, bevor Sie den Dienst starten:

systemctl aktivieren NetworkManager-wait-online.service

0
Ultra Breaker

Bei Amazon EC2 und elastischen IPs kennt der Server seine IP-Adresse nicht wie bei den meisten anderen Servern. In den virtuellen Apache-Host-Dateien setzen Sie also mindestens *: 80 anstelle Ihrer elastischen IP: 80

Dann funktioniert es richtig. Theoretisch sollte also *: 80 für nginx dasselbe funktionieren, aber wenn Sie [emerg]: bind () auf 0.0.0.0:80 (98: Adresse bereits verwendet) erhalten. Ich habe noch keine Lösung gefunden ..

0
cchiera

Für Leute, die sich in Zukunft damit beschäftigen könnten, habe ich einfach meine private IP-Adresse in der AWS-Instanz nachgeschlagen und daran gebunden. Ich bestätigte, dass Nginx in der Lage war, öffentlich zuzuhören und danach meine Umschreibung durchzuführen. Ich konnte nicht *: PORT, da ich einen internen Server hatte, zu dem ich mich befand.

0
MLindsay

Möglicherweise ist noch ein Prozess/Programm vorhanden, das/Port 80 an Port 80 verwendet. 

Sie können dies mit netstat -lp überprüfen. Beenden Sie den Vorgang und starten Sie nginx.

0
Rodney Quillo