it-swarm.com.de

nginx hört nicht auf Port 80

Ich habe gerade einen Ubuntu 12.04-Server und nginx 1.2.7 installiert, default von sites-enabled entfernt und meine eigene Datei in sites-available und symlink bei sites-enabled hinzugefügt. Dann nginx neu gestartet.

Problem: Die Website wird jedoch nicht geladen, wenn Sie zur URL gehen. netstat -nlp | grep nginx und netstat -nlp | grep 80 liefern beide keine Ergebnisse! lsof -i :80 gibt auch nichts zurück. Eine Dig von einem anderen Server gibt die korrekte IP-Adresse zurück, daher sollte es kein DNS-Problem sein. Ich konnte mich mit Apache verbinden, den ich jetzt eingestellt habe. nginx-Logs zeigen auch nichts.

Wie soll ich dieses Problem beheben?

/etc/nginx/site-available/mysite.com

server {
    listen   80;
    server_name www.mysite.com mysite.com *.mysite.com;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    root /var/www/mysite/public;

    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args ;
    }
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_read_timeout 300;
    }

}
61
Nyxynyx

Ich hatte das gleiche Problem. Die Lösung bestand darin, dass ich meine Siteconf-Datei nicht korrekt verknüpft hatte. Versuchen Sie, vim /etc/nginx/sites-enabled/mysite.com— auszuführen - können Sie dazu gelangen? Ich erhielt "Permission Denied".

Wenn nicht ausgeführt:

rm /etc/nginx/sites-enabled/mysite.com
ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/mysite.com
119
thcipriani

Wenn Ihre Protokolle zu dem Problem nicht verwendet werden, schließen Sie möglicherweise das sites-enabled Verzeichnis nicht ein. Eine einfache Möglichkeit, um zu erfahren, dass die Site geladen wird, besteht darin, den Pfad des Fehler-/Zugriffsprotokolls in Ihrem Serverblock auf einen eindeutigen Pfad festzulegen, nginx neu zu laden und zu prüfen, ob die Dateien erstellt wurden.

Stellen Sie sicher, dass die folgende include-Direktive im http-Kontext in /etc/nginx/nginx.conf vorhanden ist.

http {
  ...
  include /etc/nginx/sites-enabled/*;
}
24
Patrick

Ich bin auf dasselbe Problem gestoßen, ich habe einen Failed to load resource: net::ERR_CONNECTION_REFUSED-Fehler erhalten, wenn ich über HTTP verbunden bin, aber über HTTPS. Ran netstat -tulpn und sah, dass Nginx nicht an Port 80 für IPv4 bindet. Alles getan, was hier beschrieben wird. Es stellte sich heraus, dass etwassehrdumm ist:

Vergewissern Sie sich, dass die sites-available-Datei mit dem default_server tatsächlich aktiviert ist.

Ich hoffe, das hat einige arme Idioten gerettet.

5
dayuloli

Sie binden Nginx wahrscheinlich zweimal an Port 80. Ist das deine vollständige Konfigurationsdatei? Haben Sie keine andere Anweisung, Port 80 anzuhören?

4
Andres

Es hat sich als hilfreich erwiesen, das Debuggen von Nginx mit den folgenden Schritten zu behandeln:

1 ... Stellen Sie sicher, dass Nginx ausgeführt wird.

ps aux | grep nginx

2 ... Überprüfen Sie, ob Prozesse bereits an den betreffenden Port gebunden sind.

lsof -n -i:80

3 ... Stellen Sie sicher, dass Nginx neu geladen wurde.

Sudo nginx -t
Sudo nginx -s reload

Auf dem Mac ist brew services restart nginx nicht ausreichend, um Nginx neu zu laden.

4 ... Versuchen Sie, einfache Antworten manuell zu erstellen, um sicherzustellen, dass Ihr Standortpfad nicht fehlerhaft ist. Dies ist besonders hilfreich, wenn Probleme bei der Verwendung von proxy_pass zum Weiterleiten von Anforderungen an andere laufende Apps auftreten.

location / {
    add_header Content-Type text/html;
    return 200 'Here I am!';
}
2
spencer.sm

Ein in ; fehlendes Semikolon /etc/nginx/nginx.conf beispielsweise in der Zeile vor include /etc/nginx/servers-enabled/*; kann diese Anweisung einfach umgehen und nginx -t-Prüfung ist trotzdem erfolgreich.

Überprüfen Sie also einfach, ob alle Anweisungen in /etc/nginx/nginx.conf mit einem Semikolon ; abgeschlossen sind.

2
noraj

Haben Sie überprüft, ob Ihre Nginx-Binärdatei wirklich existiert? Bitte überprüfen Sie, ob

#whereis nginx

gibt den binären Pfad aus und überprüft diesen Pfad mit Ihrem Init-Skript aus /etc/init.d/nginx. z.B.

DAEMON=/usr/sbin/nginx

(In meinem Init-Skript wird "test -x $ DAEMON || exit 0" aufgerufen und dieses Skript hat auf jeden Fall nichts zurückgegeben - meine Binärdatei fehlte vollständig)

1
Dionysius

In meinem Fall zeigten die Ausgaben dieses Netzwerkbefehls, dass nginx korrekt an Port 80 gebunden war, die Ports jedoch mit nmap nicht von außen zugänglich oder sichtbar waren.

Obwohl ich eine Firewall vermutete, stellte sich heraus, dass alte iptables-Regeln auf dem Computer Datenverkehr von diesen Ports umleiteten und mit nginx in Konflikt standen. Verwenden Sie Sudo iptables-save, um alle derzeit geltenden Regeln anzuzeigen.

0
Silveri