nginx: Lernerkenntnisse eines Noobs

Server
nginx
Autor:in

Johannes Titz

Veröffentlichungsdatum

2. August 2023

An der Uni betreiben wir einen Server auf dem auch ShinyProxy für unsere Apps läuft. Vor den Shinyproxy schalten wir einen nginx Reverse Proxy. Es hat ein Stück gedauert bis ich die Einstellungen von nginx verstanden habe. Heute soll es also um ein paar Erkenntnisse gehen, die für Anfänger hilfreich sind. Und natürlich auch für mein späteres Ich, denn so oft konfiguriere ich nginx nicht und nach ein paar Monaten mache ich wieder die gleichen Fehler.

reload statt restart

Du kannst den Service von nginx reloaden über systemctl nginx reload, so kommt es zu keiner Downtime. Benutzt Du stattdessen restart, so wird Dein Server für einige Sekunden nicht erreichbar sein.

nginx -t

Über nginx -t kannst Du alle Deine Konfigs auf Syntax-Fehler prüfen, unbedingt machen bevor Du reloadest! Aber das heißt nicht, dass es keine Fehler geben wird, nur dass die gröbsten ausgemerzt sind.

error-log

Falls nginx mit einer Fehlermeldung beendet wird, schau Dir den error-log an, üblicherweise unter: /var/log/nginx/error.log

Prüfe vorab ob neu-konfigurierte Ports offen sind

Ein häufiger Fehler ist Ports zu konfigurieren die bereits benutzt werden. Dann streikt nginx natürlich und der ganze Service wird nicht gestartet, alle Deine Seiten sind down. Daher unbedingt vorab prüfen, ob die Ports frei sind. Am einfachsten über net-tools (vorab installieren):

sudo netstat -tulpn

Es kann z. B. sein, dass standardmäßig apache läuft und Port 80 blockiert. In diesem Fall einfach den Apache-Service stoppen und disablen.

rewrites mit () und $1

rewrite ^/verzeichnis/(.*)$ /$1 break;
proxy_pass ...;

Das bedeutet einfach nur, dass der Teil nach verzeichnis an den proxy weitergegeben wird.

Zertifikate

SSL Ports ohne Zertifikate funktionieren nicht, nginx wird nicht starten!

Zertifikate müssen genau auf den server_name passen, außer es sind Wild-Card-Zertifikate.

client_max_body_size

Ganz wichtig für Shiny, denn das bestimmt unabhängig von den Shiny-Einstellungen die maximale Dateigröße für den Upload. Problem ist, wenn man das nicht weiß, dann versteht man auch die Fehlermeldung nicht.

Ich benutze 5MB:

client_max_body_size 5m;