Webserver-Routing
Webserver-Routing
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!
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!
- Lord_Carlos
- Beiträge: 5578
- Registriert: 30.04.2006 17:58:52
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Dänemark
Re: Webserver-Routing
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.
und my_configs/proxy.conf so ca:
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;
}
}
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!
Re: Webserver-Routing
Also einen reverse Proxy. Danke. Damit lässt sich erstmal weiterarbeiten.
Re: Webserver-Routing
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
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
Re: Webserver-Routing
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:
und erhalte die korrekte Response (Loginseite). Wenn ich jedoch nur aufrufe:
Dann redirectet es auf dem Ziel-Apache intern um auf /login.htm. Ich erhalte dann als Response-URL:
Ich benötige aber die Response-URL wieder in dieser Weise:
hier die Konfig:
Hat jmd eine Idee, wie man diesen Reverse-Redirect korrekt abhandelt?
ich rufe auf:
Code: Alles auswählen
http://meinedomain.de/proxydir/login.htm
Code: Alles auswählen
http://meinedomain.de/proxydir/
Code: Alles auswählen
http://meinedomain.de/login.htm
Code: Alles auswählen
http://meinedomain.de/proxydir/login.htm
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>
- Lord_Carlos
- Beiträge: 5578
- Registriert: 30.04.2006 17:58:52
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Dänemark
Re: Webserver-Routing
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
* 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!
Re: Webserver-Routing
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.