"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Debian Apache2 Reverse Proxy Locations

Indigo 24.04.2019 - 13:33 8435 16
Posts

Indigo

raub_UrhG_vergewaltiger
Avatar
Registered: Mar 2001
Location: gigritzpotschn
Posts: 6690
ich hoffe von euch ist jemand apache fit, ich seh mich nicht mehr raus :p

ich habe einige VMs (nextcloud, fhem fürs erste) die ich über einen dyndns alias nach aussen exposen möchte

momentan läuft das über portforwarding am router, die nextcloud instanz hört auf port 80 und 443 (letsencrypt SSL), die fhem instanz über port 8083

also
meine.ddns.net:80/443 (https)
und
meine.ddns.net:8083

der eleganz halber möchte ich beide instanzen über SSL sichern und dafür mittels reverse proxy und locations zu folgendem ergebnis kommen:

meine.ddns.net/nc für die nextcloud instanz
und
meine.ddns.net/fhem für die fhem instanz

beide über ein SSL zertifikat für meine.ddns.net - das sollte doch so möglich sein, oder?

soweit so gut
fhem hat im internen netz die IP 10.0.0.201
nextcloud im internen netz die IP 10.0.0.215

habe momentan eine weitere VM mit debian und apache2 aufgesetzt die quasi das zukünftige frontend für die beiden instanzen bilden soll und reverse proxy spielen soll - IP 10.0.0.238

soweit so klar, also am router die ports 80 und 443 auf 10.0.0.238 umgeleitet und zu spielen begonnen

webserver.conf am frontend wie folgt (zum testen erstmal ohne SSL auf port 80)
Code:
<VirtualHost *:80>
ServerAdmin [email]blablablubb@bla.com[/email]

ServerName meine.ddns.net
ProxyRequests off
DocumentRoot /var/www/html
ProxyPreserveHost on

	<Location>
	ProxyPass "/nc" "http://10.0.0.215:80/"
	ProxyPassReverse "/nc" "http://10.0.0.215:80/"
	ProxyPass "/fhem" "http://10.0.0.201:8083/"
	ProxyPassReverse "/fhem" "http://10.0.0.201:8083/"
	Order allow,deny
        Allow from all
	</Location>

</VirtualHost>

weder intern via 10.0.0.238/nc respektive /fhem
noch über meine.ddns.net/nc bzw. /fhem
komme ich auf den jeweiligen server :confused:

ich forste schon den ganzen tag rum, aber komm nicht weiter...

Viper780

Er ist tot, Jim!
Avatar
Registered: Mar 2001
Location: Wien
Posts: 49933
Muss es apache sein?

Dafür würd ich eher nginx nehmen.

othan

Layer 8 Problem
Avatar
Registered: Nov 2001
Location: Switzerland
Posts: 4226
Ich hab zuhause sowas gebastelt (allerdings mit sub-Domains und nicht mit sub-Foldern)
Durch einen erzwungenen Providerwechsel kann ich aber gerade nicht drauf zugreifen.

Hatte eine "proxy-VM" die je nach subdomain auf 3-4 verschiedene interne Webserver umgeleitet hat (Webserver, Bastelserver, Monitoring...)

Vielleicht komm ich am Abend dazu, um mal reinzuschauen.

Wollte es eigentlich für die Arbeit dokumentieren, aber der Ausbildner war der Meinung, dass ein Reverse-Proxy für die Lernenden nicht interessant genug sei :bash:

Indigo

raub_UrhG_vergewaltiger
Avatar
Registered: Mar 2001
Location: gigritzpotschn
Posts: 6690
Zitat aus einem Post von Viper780
Muss es apache sein?

Dafür würd ich eher nginx nehmen.

macht es das einfacher?
mir ists grundsätzlich wurscht welcher webserver zum einsatz kommt, funzen muss es :D

Zitat aus einem Post von othan
Ich hab zuhause sowas gebastelt (allerdings mit sub-Domains und nicht mit sub-Foldern)
Durch einen erzwungenen Providerwechsel kann ich aber gerade nicht drauf zugreifen.

Hatte eine "proxy-VM" die je nach subdomain auf 3-4 verschiedene interne Webserver umgeleitet hat (Webserver, Bastelserver, Monitoring...)

Vielleicht komm ich am Abend dazu, um mal reinzuschauen.

Wollte es eigentlich für die Arbeit dokumentieren, aber der Ausbildner war der Meinung, dass ein Reverse-Proxy für die Lernenden nicht interessant genug sei :bash:

subdomain spielts leider aufgrund des dyndns accounts nicht...

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12070
Zitat aus einem Post von othan
Ich hab zuhause sowas gebastelt (allerdings mit sub-Domains und nicht mit sub-Foldern)

Das ist meistens der Schluessel zum Erfolg beim Reverse-Proxying von Applikationen, die nicht unbedingt vom Erfinder dafuer gebaut wurden :) Tut man das nicht, und zieht stattdessen eine Pfad-Komponente in den URI ein, die man dann am Reverse Proxy wieder rausschneiden muss, kann man sich Unmengen an Bauchschmerzen einhandeln - egal ob nginx oder apache2 oder sonstwas.

Edith meint: Wenn dein DynDNS-Provider das nicht kann: Wechsle ihn!



Zum gepasteten apache-config-Abschnitt:

Sicher, dass die Konfiguration ueberhaupt effektiv ist? Aus dem Effeff kann ich nicht sagen, ob <Location> ohne Argument valide ist. Zeigt dir `apachectl -S` am Host, dass die Konfiguration in Ordnung ist und geladen wurde?

othan

Layer 8 Problem
Avatar
Registered: Nov 2001
Location: Switzerland
Posts: 4226
Zitat aus einem Post von Indigo
subdomain spielts leider aufgrund des dyndns accounts nicht...

sicher? dachte es gäbe Anbieter, die das erlauben.
Hab aber schon Ewigkeiten nicht mehr mit dyndns gespielt

Indigo

raub_UrhG_vergewaltiger
Avatar
Registered: Mar 2001
Location: gigritzpotschn
Posts: 6690
Zitat aus einem Post von othan
sicher? dachte es gäbe Anbieter, die das erlauben.
Hab aber schon Ewigkeiten nicht mehr mit dyndns gespielt

https://freedns.afraid.org

ausser ich bin zu blöd um es einzurichten...

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12070
Nimm einfach zwei eigenstaendige Records/Domains fuer die selbe IPaddr (mit der Option "Link updates of the same IP together?" kannst du sogar veranlassen, dass du nur einen Record updaten musst, um alle auf die selbe Adresse aufloesenden gemeinsam zu schalten), bzw. check dir das "Wildcard"-Flag bei einem deiner Records, dann kannst du beliebige Prefixe an deinen Domainnamen dranheften, und die resolven alle auf die selbe Adresse. Letzteres sollte auch ohne Wildcard-Cert (dafuer brauchst es afair ACME via DNS statt HTTP, was mit freedns evtl. gar nicht moeglich ist) mit Letsencrypt mit vertretbarem Aufwanf moeglich sein, wenn du nur eine Hand voll Domainnamen aktiv verwendest.

berndy2001


Avatar
Registered: Feb 2003
Location: Vienna
Posts: 2009
afraid.org kann als free-user keine wildcard domains auflösen, nimm duckdns.org

Oder du registriert einen zweiten host bei afraid und hast dann xyz.ddns.net und asd.xyz.ddns.net, letzteren mit typ cname, dann brauchst du nur den haupthost updaten.
Bearbeitet von berndy2001 am 24.04.2019, 15:03

Rogaahl

Super Moderator
interrupt
Avatar
Registered: Feb 2014
Location: K
Posts: 2306
Zitat aus einem Post von Viper780
Muss es apache sein?

Dafür würd ich eher nginx nehmen.

Zusätzlich würde ich da eher auf docker als VM setzen. Also einfach einen Letsencrypt docker installieren, der hat alles für ngnix reverse proxy parat.


Reverse Proxy geht dann sehr einfach mit:
subdomain:
Code:
server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name nextcloud.*;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    location / {
        include /config/nginx/proxy.conf;
        resolver 127.0.0.11 valid=30s;
        set $upstream_nextcloud nextcloud;
        proxy_max_temp_file_size 2048m;
        proxy_pass [url]https://[/url]$upstream_nextcloud:443;
    }
}

Subfolder:
Code:
# Redirects for DAV clients
location = /.well-known/carddav {
    return 301 $scheme://$host/nextcloud/remote.php/dav;
}

location = /.well-known/caldav {
    return 301 $scheme://$host/nextcloud/remote.php/dav;
}

location /nextcloud {
    return 301 $scheme://$host/nextcloud/;
}

location ^~ /nextcloud/ {
    include /config/nginx/proxy.conf;
    resolver 127.0.0.11 valid=30s;
    set $upstream_nextcloud nextcloud;
    rewrite /nextcloud(.*) $1 break;
    proxy_pass [url]https://[/url]$upstream_nextcloud:443;
    
    proxy_max_temp_file_size 2048m;

    proxy_set_header Range $http_range;
    proxy_set_header If-Range $http_if_range;
    proxy_set_header Connection $http_connection;
    proxy_redirect off;
    proxy_ssl_session_reuse off;
} 

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12070
... was dir, im Vergleich zu einem cronjob/systemd-timer mit acme-tiny oder certbot, genau nichts bringt - abgesehen von zusaetzlicher Komplexitaet und totaler Erschossenheit beim Versuch, dadurch entstandene Probleme zu debuggen.

Viper780

Er ist tot, Jim!
Avatar
Registered: Mar 2001
Location: Wien
Posts: 49933
Zitat aus einem Post von Indigo
macht es das einfacher?
mir ists grundsätzlich wurscht welcher webserver zum einsatz kommt, funzen muss es :D
.

Für mich schon, generell wirds wurscht sein.
Je nach dem wie tief du rein willst hätt ich jetzt auch docker dafür vorgeschlagen.

Indigo

raub_UrhG_vergewaltiger
Avatar
Registered: Mar 2001
Location: gigritzpotschn
Posts: 6690
Zitat aus einem Post von berndy2001
afraid.org kann als free-user keine wildcard domains auflösen, nimm duckdns.org

Oder du registriert einen zweiten host bei afraid und hast dann xyz.ddns.net und asd.xyz.ddns.net, letzteren mit typ cname, dann brauchst du nur den haupthost updaten.

zugegebenermassen hab ich hier noch ein kleines verständnisproblem:

wenn ich in afraid.org zwei cnames erstelle (fhem.meine.ddns.net, nc.meine.ddns.net) welche auf den haupthost (meine.ddns.net) zeigen. checkt der apache woher der request kommt und ich kann es mit folgender virtualhost definition verzweigen
Code:
<VirtualHost fhem.meine.ddns.net:443>
    ProxyPass / [url]http://10.0.0.201:8083/[/url]]
    ProxyPassReverse / [url]http://10.0.0.201:8083/[/url]
</VirtualHost>

<VirtualHost nc.meine.ddns.net:443>
    ProxyPass / [url]http://10.0.0.215:80/[/url]
    ProxyPassReverse / [url]http://10.0.0.215:80/[/url]
</VirtualHost>

mit letsencrypt ein zertifikat für beide domains erstellen oder lieber ein wildcard zertifikat für meine.ddns.net?

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12070
Zitat aus einem Post von Indigo
mit letsencrypt ein zertifikat für beide domains erstellen oder lieber ein wildcard zertifikat für meine.ddns.net?

Fuer die E2E-Verschluesselung ist das gleichwertig (die Apache-Konfiguration ist mit den zwei Zertifikaten etwas umfangreicher, weil du eben zwei unterschiedliche Zertifikate in jeweils einem VHost konfigurieren musst), aber Wildcard-Certs sind bei LE "schwieriger", d. h. nicht mit der HTTP-ACME-Challenge, signiert zu bekommen. Du musst entscheiden, was fuer dich einfacher ist - aber ich nehme an, dass der Weg mit Zertifikaten fuer zwei Namen der einfachere ist.

Indigo

raub_UrhG_vergewaltiger
Avatar
Registered: Mar 2001
Location: gigritzpotschn
Posts: 6690
hab grad versucht mit letsencrypt die afraid.org cnames zu zertifizieren, funzt irgendwie nicht, acme challenge schlägt fehl... der haupthost hat bereits ein zertifikat, bei den subs gehts nicht...

also wirds wohl die variante mit subfolders werden müssen...
hiezu bräuchte ich allerdings ein wenig input oder eine beispielconfig die ich für meine zwecke entfremden kann

hat wer was brauchbares für mich?
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz