• Und wer ist…?
  • Holiday Berichte
    • Urlaub Schottland 2013
    • Urlaub Griechenland 2013
  • Services
  • Kontakt/GnuPG

KOKOLOR.ES

Hier geht's einfach mal um alles und nichts!

nginx

WordPress hinter Reverse Proxy

5. August 2019 by Sebastian 2 Comments

Ich habe heute in der Firma die Webseite umgezogen und da diese sich nun eine IP mit anderen Seiten teilen muss, läuft sie hinter einem Reverse Proxy (nginx). Die Verbindung zwischen Proxy und Webseite läuft dabei über HTTP.

Wenn ich die Seite aufrufen wollte, lief der Browser laufend in einen Redirect Loop und ich wusste nicht wieso. Eine Seite, ebenfalls WordPress, die ich parallel auf das selbe System umgezogen habe, funktionierte ohne Problem mit der identischen Konfiguration. Nachdem ich alles andere ausgeschlossen hatte, kam mir der Gedanke das womöglich WordPress selbst für den Loop verantwortlich ist und tatsächlich, es war so. Der Unterschied zu der anderen WordPress Installation war, folgende Konfiguration in der wp-config.php:

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
    $_SERVER['HTTPS'] = 'on';

Kein Plan wieso das bei der einen Installation enthalten war und der anderen wieder nicht. Eventuell gab es bei der Installation einen Diese Seite befindet sich hinter einem Reverse Proxy Button, an den ich mich nicht erinnere. Allerdings weiß ich nicht wieso ich das dann bei der einen Installation ausgewählt haben soll und bei der anderen nicht, da beide vorher nicht hinter einen Reverse Proxy liefen.
Natürlich muss auch vom Reverse Proxy der Header entsprechend gesetzt werden, damit es funktioniert, was man in Nginx z.B. wie foglt tut:

proxy_set_header X-Forwarded-Proto $scheme;
Posted in: Arbeit, IT, Linux, Opensource Tagged: linux, nginx, php, wordpress

Zugriffsschutz mit .htaccess in nginx

22. Februar 2017 by Sebastian 4 Comments

Ich habe vor einer Weile mal einen alten Webserver von apache2 nach nginx migriert, welcher eine Unterseite hatte, die mit .htaccess gesperrt war. Mir ist bekannt das nginx aus Performancegründen keine .htaccess-Dateien unterstützt, dennoch muss es ja möglich sein den Zugriff auf eine Unterseite zu limitieren. Nach ein paar Minuten suchen in der nginx Dokumentation, findet man das ngx_http_auth_basic_module, welches genau das kann. Der location-Block für die Unterseite foobar würde dann wie folgt aussehen:

location /foobar/ {
    auth_basic "Closed Access";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

In der angegebenen .htpasswd steht der Username und das zugehörige Passwort (oder mehrere).

#EDIT
Hinweise von Arne, etwas von mir gekürzt: Den Usernamen und Passwort eintragen:

echo "USER:$(openssl passwd -apr1)" >> /etc/nginx/.htpasswd

Es wird zweimal nach dem Passwort gefragt.

Hinweise von Anonymous:

Von den Online-Generatoren sollte man tunlichst die Finger lassen!
Zumindest in der Vergangenheit gab es einige dieser Generatoren, die nicht nur dem Benutzer ihre Passwörter verschlüsselt haben, sondern auch zeitgleich damit diverse Rainbow-Tables befüllt haben.

Vielen Dank für den Hinweis an euch beide!

Posted in: Arbeit, IT, Linux, Opensource Tagged: linux, nginx

Synology Android Apps und Reverse Proxy

28. Juni 2016 by Sebastian 5 Comments

Da ich meinem Vater schon vor einer Weile eines meiner alten Raspberry Pi’s als Gateway für mein VPN zu Hause installiert habe, damit er z.B. meine NAS zu Hause einbinden kann und ich seine, kam mir neulich der Gedanke das ich ihm doch auch seine NAS Dienste über meinen Reverse Proxy zur Verfügung stellen könnte. Der Vorteil wäre das er keine Ports mehr in seinem Router zu Hause öffnen müsste und er meine Domain nutzen könnte, statt dieser verkrüppelten myfritz Domain, die er vorher nutzte.

Der Synology NAS eine weitere IP aufs Interface drücken

Bei meiner alten Synology NAS (DS209j) ging das, indem ich einfach die entsprechenden ip addr add und ip route add Zeilen in die /etc/rc.local schreibe. Synology entschied aber scheinbar irgendwann zwischen DSM 4.2 und 6 diese zu deaktivieren. Im Synology Forum fand ich dann den Hinweis das man nun Scripte unter /usr/local/etc/rc.d/ ablegen kann, welche dann beim booten ausgeführt werden. Schöne Theorie, in der Praxis tat es das jedoch bei mir nicht.
Als ich mir dann mal den Aufgabenmanager des DSM anschaute, sah ich das man hier ja benutzerdefinierte Scripte ausführen kann und das nicht nur zeitgesteuert, sondern auch bei Events wie Boot oder Shutdown. Also habe ich hier eine entsprechende Aufgabe angelegt und mein Script in mein Home verlegt. Nach einem Neustart hatte das Interface jedoch immernoch keine zusätzliche IP bekommen, das Script wurde aber laut Eventlog ausgeführt und zwar ohne Fehler. Mir kam dann der Gedanke, das vielleicht das Script schon ausgeführt wird, bevor das Interface eigentlich Up gesetzt wird. Also schrieb ich einfach mal ein sleep 10 an den Anfang und siehe da, nun funktioniert es.

Reverse Proxy einrichten

Sollte ja erstmal kein Akt sein. Nginx lief schon als Reverse Proxy auf einem meiner Server und ich fügte lediglich eine neue Server Sektion hinzu:

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name nas.de;

    ssl_certificate /etc/letsencrypt/live/nas.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/nas.de/privkey.pem;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass https://1.1.10.20:5001;
    }
}

An dieser Stelle habe ich das erste mal mit letsencrypt Zertifikaten gearbeitet. War sehr angenehm und einfach. Anschließend war die NAS schonmal erreichbar, man konnte sich einloggen und alles lief soweit – bis auf die Photostation.
Diese verwendet ja einen anderen Port, in meinem Fall 5002. Rief ich diese im lokalen Netz aus dem DSM heraus auf, hängt er lediglich /photo an die Domain an, machte ich es jedoch über den Reverse Proxy hängte er noch den Port mit an. In der Photostation ist es möglich den Routerport zu ändern, welchen ich dann in 443 abänderte. Anschließend versuchte ich es erneut, mit dem Ergebnis das er nun keinen Port mehr anhängt, die Adresse jedoch noch immer nicht erreichbar war. Ich fügte dann folgendes, zusätzlich, in die Server Sektion der Nginx Konfiguration ein, damit /photo intern auf Port 5002 weitergeleitet wird:

    location /photo {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass https://1.1.10.20:5002/photo;
    }

Das funktionierte dann auch und nun funktionierten alle Dienste soweit.

Synology DS Apps

Da mein Vater die Apps von Synology ziemlich gut findet und diese auch ausführlich nutzt, müssen diese natürlich auch funktionieren. Ich ging also jede App durch und das Ergebnis war

  • DS note – funzt
  • DS audio – funzt nicht
  • DS video – funzt nicht
  • DS file – funzt nicht
  • DS photo – funzt nicht
  • Die Daten wurden von mir dabei in jeder App gleich eingegeben. Dann ging die Sucherei los, ich guckte auf der Synology Seite nach, ob diese Apps eventuell noch zusätzliche Ports benötigen oder man noch Rechte setzen musste und so weiter. Nachdem ich dabei zu keiner Lösung kam, schaute ich mir dann mal den Traffic mit tcpdump an und stellte fest das alle Apps, bis auf die DS Note, per Default, den Port 5001 nutzen, wenn man keinen anderen in die Domain anhängt. Also per iptables einen Redirect von port 5001 nach 443 auf dem Reverse Proxy eingrichtet und dann lief alles:

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 5001 -j REDIRECT --to-port 443 -m comment --comment "syno port fix"
    

    Mir stellt sich da wieder die Frage was das soll. Entweder nutzt man den Standart HTTPS Port, wenn der Haken bei HTTPS gemacht wird oder man setzt einen Hinweis, das bei HTTPS der Port 5001 benutzt wird. Und das macht man dann bitte auch in jeder App einheitlich und nicht mal da so und da anders.

    Alles in allem ist mein Vater nun glücklich und es funktioniert alles.

    Posted in: IT, Linux, Netzwerk, Opensource Tagged: iptables, nas, nginx, synology

    Social Shit

    Fediverse PGP-Key XMPP Matrix Git Github

    Kategorien

    • Allgemein
    • Android
    • Anime
    • Arbeit
    • Entertainment
    • Games
    • Handy
    • IT
    • Linux
    • Monitoring
    • Netzwerk
    • Opensource
    • Privates
    • QEK Junior
    • Rattis
    • Showtime Ost
    • Showtime West
    • Windows

    Interessantes

    • chr.istoph's Blog
    • 5222.de
    • World of Edolas
    • Lainblog

    Archive

    • Juni 2023
    • August 2019
    • Oktober 2018
    • März 2018
    • Dezember 2017
    • Juli 2017
    • Juni 2017
    • Mai 2017
    • März 2017
    • Februar 2017
    • Januar 2017
    • Dezember 2016
    • November 2016
    • September 2016
    • August 2016
    • Juli 2016
    • Juni 2016
    • Mai 2016
    • April 2016
    • März 2016
    • Februar 2016
    • Dezember 2015
    • November 2015
    • September 2015
    • August 2015
    • Juli 2015
    • Juni 2015
    • Mai 2015
    • April 2015
    • März 2015
    • Februar 2015
    • November 2014
    • Oktober 2014
    • August 2014
    • Juli 2014
    • Juni 2014
    • Mai 2014
    • April 2014
    • März 2014
    • Februar 2014
    • Dezember 2013
    • November 2013
    • Oktober 2013
    • September 2013
    • August 2013
    • Juli 2013
    • April 2013
    • März 2013
    • Februar 2013
    • Januar 2013
    • Dezember 2012
    • November 2012
    • September 2012
    • Juli 2012
    • Juni 2012
    • Mai 2012
    • Februar 2012
    • Januar 2012

    Tags

    android anime apt bash bugs debian freifunk freifunk-aachen gnome hardware htpc kernel linux lucid lxc mdadm mint monitoring mysql network nginx openwrt outdoor package pgp php postgres precise raid redmine squeeze telekom testing trusty ubuntu virtualization vserver wheezy windows xbmc xenial xorg xubuntu zabbix zarafa

    Datenschutzerklärung | Impressum

    Copyright © 2025 KOKOLOR.ES.

    Omega WordPress Theme by ThemeHall