Ubuntu-Server neu gestartet, Nginx-Site nicht mehr über den Browser zugänglich

Ubuntu-Server neu gestartet, Nginx-Site nicht mehr über den Browser zugänglich

Ich habe meinen Ubuntu-Server heute Morgen neu gestartet, weil anscheinend ein Speichermangelfehler auftrat (kommt gelegentlich vor, war aber nicht so schlimm, dass ich versucht habe, ihn zu beheben). Aber jetzt ist meine Site (die vorher einwandfrei funktionierte) nicht mehr über den Browser zugänglich.

Das Setup: Ich betreibe eine NuxtJS-Site, die ich mit pm2 als Daemon und mit nginx als Reverse-Proxy ausführe. Ich habe einen Post-Receive-Git-Hook, mit dem ich in mein Remote-Git-Repo pushen kann, das dann die App neu erstellt und die pm2-Instanz neu startet.

Ich kann auf meine Site nur zugreifen vonim Inneren des Servers, in einem Terminalfenster. Lynx, wget und cURL funktionieren alle und folgen sogar der 301-Weiterleitung zu HTTPS. Und sie funktionieren, wenn ich die Domäne selbst anfordere, nicht nur den localhost:3000, der per Reverse-Proxy weitergeleitet wird. Also, funktioniert curl https://my-domain.org. Wenn ich versuche, curl/lynx/usw. von einem anderen Terminalfenster aus zu verwenden, wartet es einfach, bis die Zeit abläuft. Dasselbe gilt für den Browser – wartet, bis die Zeit abläuft.

Hier sind die Dinge, die ich ausprobiert/angesehen habe:

  • Ich verwende UFW und habe deshalb überprüft, ob die Firewall das Problem ist. Aber 80, 443 und 8080 sind alle auf ALLOW eingestellt.
  • Ich habe versucht herauszufinden, ob nginx vielleicht nicht zuhört, also habe ich es versucht sudo lsof -i -P -n | grep LISTEN. Hier ist die Ausgabe davon:
nginx     2896     root    6u  IPv4 668673557      0t0  TCP *:443 (LISTEN)
nginx     2896     root    7u  IPv4 668673558      0t0  TCP *:80 (LISTEN)
nginx     2897 www-data    6u  IPv4 668673557      0t0  TCP *:443 (LISTEN)
nginx     2897 www-data    7u  IPv4 668673558      0t0  TCP *:80 (LISTEN)
nginx     2898 www-data    6u  IPv4 668673557      0t0  TCP *:443 (LISTEN)
nginx     2898 www-data    7u  IPv4 668673558      0t0  TCP *:80 (LISTEN)
  • Ich habe versucht, das access.log von nginx zu überprüfen. Alle meine curl/wget/Lynx-Anfragen werden wie gewohnt angezeigt, aber keine der Browseranfragen. Ich habe mir auch das error.log angesehen und Folgendes erhalten:
2021/07/31 11:51:52 [emerg] 885#885: bind() to 0.0.0.0:443 failed (98: Address already in use)
2021/07/31 11:51:52 [emerg] 885#885: bind() to 0.0.0.0:80 failed (98: Address already in use)
2021/07/31 11:51:52 [emerg] 885#885: bind() to 0.0.0.0:443 failed (98: Address already in use)
2021/07/31 11:51:52 [emerg] 885#885: bind() to 0.0.0.0:80 failed (98: Address already in use)
2021/07/31 11:51:52 [emerg] 885#885: still could not bind()

Bisher habe ich keine Lösung gefunden. Ich bin einfach verblüfft, denn was auch immer sich geändert hat, es hat sich aufgrund eines Neustarts geändert. Ich bin für alle Ideen sehr dankbar.

BEARBEITEN, um einige Ausgaben hinzuzufügen:

sudo systemctl status nginx:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2021-07-31 15:05:53 EDT; 27min ago
  Process: 6834 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status
  Process: 6840 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 6837 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 6841 (nginx)
   CGroup: /system.slice/nginx.service
           ├─6841 nginx: master process /usr/sbin/nginx -g daemon on; master_process on
           ├─6842 nginx: worker process                           
           └─6843 nginx: worker process                           

Jul 31 15:05:53 parrot systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 31 15:05:53 parrot systemd[1]: Started A high performance web server and a reverse proxy server.

Die Ausgabe von sudo nginx -Tist lang, alsoIch habe es auf den Punkt gebracht.

Antwort1

Das ist so dumm, dass ich nicht weiß, warum das ein Problem war, also bin ich für alle Gedanken dazu dankbar. Meine ufwEinstellungen waren/sind wie folgt:

Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
80                         ALLOW       Anywhere                  
8080                       ALLOW       Anywhere                  
22 (v6)                    ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)             
80 (v6)                    ALLOW       Anywhere (v6)             
8080 (v6)                  ALLOW       Anywhere (v6) 

Da sind ein paar redundante 80er drin, aber ich habe zusätzliches Zeug hinzugefügt, um zu sehen, ob es hilft.

Jemand hat mir empfohlen, ufw zu deaktivieren, nur um sicherzugehen, dass es nicht das Problem war. Offenbar war es das. Ich habe es deaktiviert, die Site funktionierte sofort wieder, und als ich es wieder aktiviert habe, in der Erwartung, dass es wieder kaputt gehen würde, funktionierte es immer noch. Also musste etwas an ufw erneut ausgelöst werden, als ich den Server neu startete.

EDIT: Das liegt vielleicht an iptables-persistent, das auf den meisten Servern automatisch installiert ist, nehme ich an? Sieht so aus, als ob esdas gleiche Problem wie diese SO-Antwort.

verwandte Informationen