Apache Spezialist? Reverse Proxy Frage

Begonnen von Tedious, 13 November 2018, 11:52:22

Vorheriges Thema - Nächstes Thema

Tedious

Guten Morgen,

ich habe eine Frage zum reverse Proxy. Via Fritzbox route ich Port 443 aud den 443 des FHEM Servers, hier habe ich (prinzipiell in weiten Zügen dem Wiki folgend) einen Apache reverse Proxy eingerichtet. Das läuft seit Jahren zuverlässig.

Jetzt soll allerdings noch eine OwnCloud-Docker Instanz von außen zugänglich gemacht werden. Im Prinzip habe ich die Konfig übernommen und angepasst (auf Port 80), aber das funktioniert leider nicht (keine Route).

<VirtualHost *:80>
    ServerName **********.com

    ServerAdmin *******.com
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/*********.error.log
    CustomLog ${APACHE_LOG_DIR}/*********.com.access.log combined

    SSLCertificateFile /etc/letsencrypt/live/**********/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/************.com/privkey.pem

    Include /etc/letsencrypt/options-ssl-apache.conf

    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On

    <Location /owncloud>
        ProxyPass http://localhost:32453/owncloud
        ProxyPassReverse http://localhost:32453/owncloud
    </Location>

    <Directory />
        RedirectPermanent / /owncloud
    </Directory>

</VirtualHost>


Habe ich einen Denkfehler? Oder hat jemand eine elegante andere Idee für mich. Kann ich unter vem VHost 443 auch eine andere <location> angeben? Bin da ehrlich gesagt nicht wirklich drin, hab sowas bislang nur beim IIS gemacht :(

Bin für jeden Tip dankbar...
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

Wernieman

D kannst mehr als eine location anlegen. Du kannt auch in einem vhost mehrere Weiterleitungen angeben. z.B. in dem Du die für fhem erweiters ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

gvzdus

Jawohl, so würde ich es auch machen.

Die Location für /fhem/ liefert Dir FHEM, die /ownCloud/-Location eben die OwnCloud-Instanz. Also füge nur den Location-Block ein.

An Deiner Konfiguration ist außerdem mutmaßlich falsch: Wenn Du die OwnCloud-Instanz über Port 80 ansprechen möchtest (was eigentlich nicht nötig ist, siehe oben), dann *kannst* Du zwar https://<meinefritzbox>:80/ aufrufen, aber normalerweise spricht man auf Port 80 kein SSL/https, sondern unverschlüsseltes HTTP.

Wernieman

Wobei auch apache die Umsetzung http auf https machen kann. Aber diese Configuration ... da kann ich Dir (nicht mehr) helfen. Setze seit 2 Jahren dafür noch noch nginx ein ...

Btw: Brauchst Du wirklich apache? Läuft da auch mehr drauf oder nur der proxy?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

bugster_de

Hi,

ich habe bei mir zu Hause seit Jahren genau die von dir gewünschte Kombination am Laufen
- auf meinem Homeserver läuft Apache. Hierbei ist nur Port 443 (HTTPS) nach aussen frei gegeben
- auf dem Homeserver läuft owncloud sowie noch ein paar andere Dienste.
- FHEM läuft auf einem RPi

Apache ist mittels locations konfiguriert. Sprich Dateien im Apache Verzeichnis /conf-available erzeugen. Ich habe je eine Datei pro Dienst (Bsp. fhem.conf, owncloud.conf, etc.) In dieser Datei sind die notwendigen Einstellungen für den Reverseproxy hinterlegt. Wie man das für owncloud macht findet sich haufenweise im Netz udn sogar bei owncloud selbst (https://doc.owncloud.org/server/10.0/admin_manual/configuration/server/reverse_proxy_configuration.html)

Nun sind meine Dienste damit via https://www.mydyndns.org/owncloud bzw. https://www.mydyndns.org/haus zu erreichen und die Kommunikation ist verschlüsselt. Sprich benutzername und Passowrt können nicht so einfach mitgeschnüffelt werden.

Vorteil für FHEM dieser Methode ist es, dass FHEM vom Intranet ohne Passwort zugänglich ist und bei Zugriff von aussen, ein Passwort durch den Apache geprüft wird. Für den Zugang von aussen habe ich eine extra Seite bei FHEM eingerichtet, auf der man z.B. keine Konsolenbefehle absetzen kann, die Detail-Seite der Geräte nicht öffnen darf und auch bestimmte Räume, in denen ich administrative Sachen drin haben nicht angezeigt werden. Als z.B. auf Port 8083 die normale FHEM Seite und auf Port 98084 die spezielle Seite für Aussenzugriff und Apache routet nur auf den 8084 Port.

Ich kann heute abend zu Hause mal meine Konfig-Datei für FHEM und Owncloud hier einstellen.

Auf meinem neuen Homeserver habe ich das ganze nun in einzelnen Docker Container verpackt. Bringt Vorteile bei der Wartbarkeit aber bis man das halbwegs am Laufen hat, macht man eine Lernkruve durch

bugster_de

so, hier mal meine Configs
owncloud.conf
<location /owncloud>
  ProxyPass http://123.456.789.123/owncloud
  ProxyPassReverse http://123.456.789.123/owncloud
  ProxyHTMLEnable On
  ProxyHTMLURLMap /  /
  ProxyHTMLURLMap /owncloud /owncloud
  SetOutputFilter INFLATE;proxy-html;DEFLATE
</location>


In diesem Fall läuft Owncloud auf dem gleichen Server wie der Apache. Man könnte als IP also auch 127.0.0.1 nehmen. Bei Owncloud bitte auch beachten, dass der Document Root ggf angepasst werden muß
https://doc.owncloud.org/server/10.0/admin_manual/installation/changing_the_web_route.html

Und für FHEM in der fhem.conf mit der IP Adresse des Raspberry. In dieser Konfig fragt der Apache auch das Zugangspasswort ab, welches in der angegeben Datei abliegen muß. Somit wie gesagt bei Zugriff aus dem Intranet ohne Passowrt und bei Zugriff von aussen mit Passwort.
<Location /fhem>
  ProxyPass http://123.456.789.321:8084/fhem
  ProxyPassReverse http://123.456.789.321:8084/fhem
  ProxyHTMLEnable On
  ProxyHTMLURLMap /        /
  ProxyHTMLURLMap /fhem/     /fhem/
  AuthType Basic
  AuthName "Password Required"
  AuthUserFile /etc/apache2/passwords/fhem
  Require valid-user
  Order deny,allow
  Allow from all
  SetOutputFilter INFLATE;proxy-html;DEFLATE
</Location>

Tedious

Hi,

super, besten Dank für die Hilfestellung! Ich schau mir das heute Abend mal in Ruhe an und melde mich ob das alles passt und läuft. Danke für den Schubs!

Grüße Tedious
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...