Webserver-Routing

Gemeinsam ins Internet mit Firewall und Proxy.
Antworten
oparudi
Beiträge: 4
Registriert: 23.10.2019 17:55:38

Webserver-Routing

Beitrag von oparudi » 23.10.2019 18:19:07

Hallo Gemeinde,

seit Tagen grüble ich, wie ich folgendes Szenario erfolgreich umsetzen könnte und bitte um Eure Hilfe.

Client <> Server1 <OVPN> Server2

Auf Server2 läuft ein integrierter Webserver einer IP-Cam Software (BlueIris). Server2 ist mittels OpenVPN an Server1 angebunden. Auf Server1 läuft ebenso ein Webserver, welcher mit der Außenwelt kommuniziert. Ich möchte nun gern, dass der Client auf den Webserver des Server2 zugreifen kann (via OVPN). Nach meiner Recherche sollte das entweder mittels NAT auf Server1 oder mittels eines Proxyservers möglich sein. Ich habe bereits versucht, mittels PHP-Script auf Server1 und curl mit Server2 zu kommunizieren. Das klappt jedoch nur für einfache Requests (PHP-Script auf Server1 ruft PHP-Script auf Server2 auf und sendet Antwort zurück). Bei komplizierteren Requests mit Authentifizierung und Cookies scheitere ich jedoch kläglich und hier endet auch mein Wissen.

Vielleicht kann mir jemand beschreiben, wie und mit welchen Mitteln ich, eine vorzugsweise indirekte Verbindung (Proxy?) realisieren könnte?

Danke!

Benutzeravatar
Lord_Carlos
Beiträge: 4858
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Webserver-Routing

Beitrag von Lord_Carlos » 23.10.2019 19:19:54

Sollte recht einfach sein mit reverse proxy.
Ich benutzte nginx. Kannst aber auch apache benutzten. Oder HaProxy. Ein VPN zu einem zweiten server habe ich nicht, aber docker auf dem selben rechner. Sollte aber eigentlich das gleiche sein: https://docs.nginx.com/nginx/admin-guid ... rse-proxy/

z.B.

Code: Alles auswählen

server {
	listen 80 default_server;
	listen [::]:80 default_server;

	server_name _;

	location / {
		proxy_pass http://Server2:8080;
		include my_configs/proxy.conf;
	}
}
und my_configs/proxy.conf so ca:

Code: Alles auswählen

proxy_http_version	1.1;
proxy_cache_bypass	$http_upgrade;

proxy_set_header Upgrade			$http_upgrade;
proxy_set_header Connection 		"upgrade";
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_set_header X-Forwarded-Proto	$scheme;
proxy_set_header X-Forwarded-Host	$host;
proxy_set_header X-Forwarded-Port	$server_port;

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

oparudi
Beiträge: 4
Registriert: 23.10.2019 17:55:38

Re: Webserver-Routing

Beitrag von oparudi » 23.10.2019 19:45:24

Also einen reverse Proxy. Danke. Damit lässt sich erstmal weiterarbeiten.

uname
Beiträge: 10124
Registriert: 03.06.2008 09:33:02

Re: Webserver-Routing

Beitrag von uname » 24.10.2019 12:56:16

Den Ansatz mit dem Reverse-Proxy solltest du weiter verfolgen.

Falls du doch noch mal einen Web-Proxy versuchen willst schau dir http://joshdick.github.io/miniProxy/ an.
Wäre nur eine PHP-Datei auf deinen Server1. Cookies kann der aber auch nicht.

Alternativ schau dir Glype an: https://github.com/k1995/glype

oparudi
Beiträge: 4
Registriert: 23.10.2019 17:55:38

Re: Webserver-Routing

Beitrag von oparudi » 25.10.2019 11:43:00

Habe jetzt das Apache proxy-Modul nachgeladen und eingerichtet. Funktioniert soweit, jedoch scheitere ich noch an der URL-Umschreibung bei einer Redirect-Response.

ich rufe auf:

Code: Alles auswählen

http://meinedomain.de/proxydir/login.htm
und erhalte die korrekte Response (Loginseite). Wenn ich jedoch nur aufrufe:

Code: Alles auswählen

http://meinedomain.de/proxydir/
Dann redirectet es auf dem Ziel-Apache intern um auf /login.htm. Ich erhalte dann als Response-URL:

Code: Alles auswählen

http://meinedomain.de/login.htm
Ich benötige aber die Response-URL wieder in dieser Weise:

Code: Alles auswählen

http://meinedomain.de/proxydir/login.htm
hier die Konfig:

Code: Alles auswählen

<VirtualHost *:443>

ServerName meinedomain.de
DocumentRoot "/var/www/meinedomain.de"
<Directory "/var/www/meinedomain.de">

RewriteEngine On
RewriteRule ^/proxydir/(.*) http://vpnip:80/$1 [proxy,last]
ProxyPassReverse  / http://vpnip:80/

<Proxy http://vpnip:80>
Require all granted
</Proxy>

</VirtualHost>
Hat jmd eine Idee, wie man diesen Reverse-Redirect korrekt abhandelt?

Benutzeravatar
Lord_Carlos
Beiträge: 4858
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Webserver-Routing

Beitrag von Lord_Carlos » 25.10.2019 11:53:48

Ja, das Problem habe ich auch manchmal.

* Das einfachste ist proxy.meinedomain.de zu benutzten.
* Wenn das nicht geht gucken ob man es bei BlueIris einstellen kann. Manche web services haben daran gedacht.
* Wenn das auch nicht geht, glaube ich bleibt dir nur noch re-write rules auf dem Proxy selber.

Google gibt mir das hier:
Bin nicht 100% sicher ob das nur fuer Blue Iris oder ui3 ist. Ich kenne beides nicht.
https://github.com/bp2008/ui3/wiki/Usin ... -directory
you could teach UI3 what the Base URL is by adding a line to your ui3-local-overrides script file: currentServer.remoteBaseURL = "/blueiris/";

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

oparudi
Beiträge: 4
Registriert: 23.10.2019 17:55:38

Re: Webserver-Routing

Beitrag von oparudi » 25.10.2019 12:08:31

Das hat mich schon einen Schritt weitergebracht. Die BaseURL konnte ich in BlueIris festlegen und jetzt wird diese auch mit zurück gegeben, sodass die BaseURL der Proxy-Direktive entspricht. Beim Einloggen wird diese aber wieder nicht übergeben. Scheint ein Bug von BlueIris zu sein. Beim Ausloggen wird sie mit übergeben. Nach dem manuellen zwischenschieben der BaseURL komm ich endlich auf das Programm.

Antworten