Last active
January 3, 2020 18:14
-
-
Save lluchs/fd2f0e5c415490ccda2c to your computer and use it in GitHub Desktop.
Revisions
-
lluchs renamed this gist
Dec 28, 2014 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
lluchs revised this gist
Dec 28, 2014 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -21,7 +21,7 @@ aktiviert werden muss (wenn man das nicht tut, werden IPv6-Verbindungen als `127.0.0.1` angezeigt). ```sh $ ./configure --prefix=$HOME/nginx --with-http_realip_module --with-ipv6 $ make $ make install ``` -
lluchs created this gist
Dec 28, 2014 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,120 @@ # nginx auf dem Uberspace ## Installation Lade die neueste "mainline"-Version (hier 1.7.9) von http://nginx.org/en/download.html herunter und entpacke sie: ```sh $ wget http://nginx.org/download/nginx-1.7.9.tar.gz $ tar xf nginx-1.7.9.tar.gz $ cd nginx-1.7.9 ``` Kompilieren geht wie gewohnt. Der `prefix` sorgt dafür, dass ins eigene Home-Verzeichnis installiert wird und nicht ins Systemverzeichnis, wo man ja keine Rechte hat. Damit IP-Adressen richtig weitergegeben werden, sollte das realip-Modul aktiviert werden. Der Uberspace ist auch via IPv6 erreichbar, was in nginx auch aktiviert werden muss (wenn man das nicht tut, werden IPv6-Verbindungen als `127.0.0.1` angezeigt). ```sh $ ./configure --prefix=$HOME/nginx --prefix=/home/clnk/nginx --with-http_realip_module --with-ipv6 $ make $ make install ``` nginx ist jetzt unter $HOME/nginx installiert. Um auf die ausführbare Datei leicht zugreifen zu können, lohnt sich ein Symlink: ```sh $ ln -s ~/nginx/sbin/nginx ~/bin ``` Alternativ kann man natürlich den Ordner dem PATH hinzufügen. ## Konfiguration Die nginx-Konfigurationsdateien liegen unter `~/nginx/conf`. Dort gibt es standardmäßig einige verschiedene Dateien, von denen automatisch nur die nginx.conf geladen wird. ```sh $ cd ~/nginx/conf $ vim nginx.conf ``` Hier sind ein paar Sachen auf jeden Fall wichtig: - Füge in der obersten Ebene die Zeile `daemon off;` hinzu. Dadurch kann man nginx mit den Daemontools laufen lassen. - Aktiviere das realip-Modul mit der folgenden Konfiguration im `http`-Block: ```nginx set_real_ip_from 127.0.0.1; set_real_ip_from ::1; real_ip_header X-Forwarded-For; ``` - Du kannst nginx natürlich nicht auf den Standardports laufen lassen. Such dir einen hohen Port aus ([siehe Wiki](https://wiki.uberspace.de/system:ports)), der noch nicht belegt ist, und nutze ihn mit `listen`: ```nginx server { listen 65432; # [...] } ``` Wenn du das soweit hast, kannst du einfach `nginx` in der Konsole ausführen (und mit Strg-C wieder beenden), um zu sehen, ob alles soweit passt. Wenn sich nginx automatisch in den Hintergrund schiebt, fehlt die `deamon off`-Konfiguration von oben! Wenn alles passt, kannst du wie gewohnt nginx mit den Daemontools laufen lassen: ```sh $ uberspace-setup-service nginx ~/nginx/sbin/nginx ``` Wenn du Änderungen an der nginx-Konfiguration machst, musst du nicht den Daemon neustarten (bzw. es wäre sogar eine schlechte Idee, das zu tun), sondern verwendest einfach `nginx -s reload`. Dabei überprüft nginx zuerst, ob deine Konfiguration gültig ist und startet dann die Worker-Prozesse automatisch neu, sobald sie alle aktuellen Verbindungen abgearbeitet haben. ## Aktualisierungen Um nginx zu aktualisieren, mache einfach alles so wie oben unter "Installation" beschrieben, nur eben mit der neueren Version. Danach nginx neu starten mit `svc -du ~/service/nginx`. Die integrierte Upgrade-Funktion, die wie das Konfigurationsneuladen keine aktiven Verbindungen verliert, funktioniert leider nicht, da wir `daemon off` verwenden. Falls du bei der vorigen Installation zusätzliche Parameter an `./configure` übergeben hast, kannst du die mit `nginx -V` sehen. ## nginx erreichbar machen Um nginx tatsächlich von außen erreichbar zu machen, kannst du verschiedene Möglichkeiten: 1. Nutze weiterhin den Apache mit einer [RewriteRule](https://wiki.uberspace.de/webserver:htaccess#rewriterule_mit_proxy). Nicht so toll, weil damit alle Anfragen durch eine zusätzliche Ebene müssen und nginx ja dieselben Dinge macht wie Apache. 2. [Lass dir den verwendeten Port öffnen](https://wiki.uberspace.de/system:ports#firewall). Nachteil: Der Port taucht dann in der URL auf. In dem Fall würdest du aber das realip-Modul natürlich nicht brauchen. 3. Direkt nginx an Pound anbinden lassen. Dazu den gewählten Port zusammen mit den Domains bzw. Pfaden an [email protected] senden. Das hat einen Geschwindigkeitsvorteil im Gegensatz zu Variante 1. Außerdem ist nginx dann regulär über Port 80 bzw. 443 erreichbar und man muss sich nicht selbst um TLS kümmern.