» ProxyPass funktioniert nicht in .htaccess - PHP Proxy als Lösung

MySQL Abfrage wie in der Konsole formatiert ausgebenNeuen Thread eröffnenNeue Antwort erstellenKomprimierung bei Hetzner aktivieren
AutorNachricht
Administrator 

Name: Marc
Geschlecht:
Anmeldedatum: 28.08.2004
Beiträge: 52431
Wohnort: Lohmar


Meine eBay-Auktionen:
21.02.2017, 12:01
zitieren

Ich habe einen Serverumzug durchgeführt und trotz aller Tests im Vorfeld kam es dann leider nach der DNS Umstellung zu einem Fehler. Nun hieß es schnell handeln und alle Besucher auf den alten Server umleiten.

Der neue Server bot leider nur Zugriff auf die .htaccess. Im Grunde reicht das auch, wenn man auf dem alten Server eine Alias-Domain hat oder noch eine Domain, die nicht umgezogen wurde. Dann kann man das machen:
RewriteEngine on
RewriteRule  (.*)  http://domainOtherServer.com/$1  [P,L]

Allerdings war der andere Server in dem Fall ein Root-Server ohne Alias-Domain, so dass nur die IP blieb über die ich die Website nicht öffnen konnte. Und zu allem Übel verlangte die betroffene Shop-Software aus Lizenzgründen den Aufruf über die Original Domain.

Das hätte ich nun mit der folgenden Apache-Konfiguration lösen können:
ProxyPreserveHost On
ProxyPass / http://ipOtherServer/
ProxyPassReverse / http://ipOtherServer/

In dem Fall sorgt dann
ProxyPreserveHost
dafür, dass die Original-Domain in die HTTP-Requests aufgenommen wird und alles ist gut.

Aber wie gesagt hatte ich nur Zugriff auf die .htaccess. Also blieb mir nichts anderes übrig als auf die Schnelle einen Proxy in PHP zu realisieren:
<?php
// debugging
$curl_debug = $_SERVER['REMOTE_ADDR'] == '0.0.0.0' ? true : false;
error_reporting(E_ALL);
ini_set('display_errors', 1);
// backward compatibility
if (!function_exists('getallheaders')) { function getallheaders() {
$headers = array();
foreach ($_SERVER as $name => $value) {
if (substr($name, 0, 5) == 'HTTP_') {
$headers[ str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5))))) ] = $value;
}
}
return $headers;
}}
// obtain visitors request headers
$headers = array();
$getheaders = getallheaders();
foreach (array_reverse($getheaders) as $name => $value) {
$headers[] = $name . ': ' . $value;
}
// curl
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://1.2.3.4' . $_SERVER['REQUEST_URI']);
// forward visitors headers
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
// needed by curl_getinfo() to receive response header from target server
curl_setopt($curl, CURLINFO_HEADER_OUT, true);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// optional use POST
if ($_POST) {
curl_setopt($curl, CURLOPT_POST, 1);
// did not work without http_build_query()
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($_POST));
}
// send request
$response = curl_exec($curl);
// extract header and body from response
$curl_info = curl_getinfo($curl);
$header_size = $curl_info['header_size'];
$http_header = substr($response, 0, $header_size);
$body = substr($response, $header_size);
curl_close($curl);
// forward headers from target server to visitor
$headers = explode(PHP_EOL, $http_header);
foreach ($headers as $header) {
// our server combined the chunked body already, so remove this encoding type
if (substr($header, 0, 17) == 'Transfer-Encoding' && strpos($header, 'chunked') !== false) {
$header = str_ireplace('chunked', '', $header);
}
header($header, false);
}
echo $body;
// debugging
if ($curl_debug) {
file_put_contents('proxy.log', print_r(array(
'time' => time(),
'info' => $curl_info,
'header' => $http_header,
'body' => $body,
'response' => $response,
), true), FILE_APPEND | LOCK_EX);
}
?>

Die Datei wurde dann als proxy.php abgespeichert und das dann in der .htaccess eingefügt:
RewriteEngine On
RewriteRule ^(.*)$ proxy.php?uri=$1 [L]

Das führt nun dazu, dass alle Anfragen an den Server durch die proxy.php verarbeitet werden und das Script wiederum leitet alles an den anderen Server weiter und holt die Antwort ab und gibt sie direkt aus. Also eben das was ProxyPass machen würde.

Wer das Script einsetzen möchte, muss nur die IP "1.2.3.4" anpassen. Ob nun vom alten auf den neuen Server oder andersherum spielt bei dem Script keine Rolle. Man kann es also auch allgemein bei einem Serverumzug einsetzen, wenn man möchte, dass alle Besucher sofort, also noch bevor neue DNS Einstellungen greifen, auf den neuen Server weitergeleitet werden.


pn email
Gast 
21.02.2017, 12:01
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "ProxyPass funktioniert nicht in .htaccess - PHP Proxy als Lösung" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:



Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter Beitrag
.htaccess www-Weiterleitung oder: Wie man es nicht macht
Im Netz finden sich viele .htaccess Anweisungen, mit denen man "ohne www" Domains auf "www." umleitet. Hier ein Beispiel: RewriteEngine On RewriteCond %&#123;HTTP_HOST&#125; ^example\.com$ &#91;NC&#93; RewriteRule...
[Allgemein]von mgutt
0
267
06.04.2015, 22:32
mgutt
Irgendwas stimmt da nicht: elFH Beifahrer funktioniert nicht
So hab den Tuning guide vom Zaitochi benutzt und mir Fensterheber und Spiegel nachgerüstet.... Jetzt hab ich ein Problem...Ich kann von der Fahrerseite aus, beide Fenster steuern, aber von der Beifahrerseite aus nicht.. Den Schalter rechts hab ich...
von freac
4
585
26.03.2006, 20:00
freac
Abs funktioniert nicht
Hallo Leute, bin neu hier und habe ein Problem. Habe nix genaueres gefunden obwohl das Thema schon mehrfach diskutiert wurde, also bitte nicht böse sein :no: Fahre einen Honda Accord CC7 bj.94 Das Abs funktioniert nicht, die Lampe leuchtet! Habe...
von theman88
7
1.015
27.07.2010, 20:44
felline
<ref> tag funktioniert nicht
Hallo zusammen Ich arbeite erst seit ca. 3 Wochen intensiv mit Media Wiki. Alles hat wunderbar funktioniert. Jetzt habe ich ein Problem. Wenn ich eine Fussnote erzeugen will gebe ich folgenden Text ein: Dieser Text soll vor der Fussnote stehen....
von Jumpinthewater
7
383
10.06.2013, 09:05
Jumpinthewater
EJ9 ABS funktioniert nicht
Hallo liebe Community, ich hab einen EJ9 Facelift BJ2000. Vor längerem ist mir aufgefallen, das das ABS nix macht. Es leuchtet aber weder die ABS Lampe (ich gehe davon aus die wurde vom Vorbesitzer manipuliert...), noch kann man am OBD Stecker...
von SilverEJ9
3
212
25.08.2023, 18:02
JP_Razor
Lüftung vom Ej9 funktioniert nicht.
So wie es scheint habe ich meine Lüftung abgeschosssen:-(( Ein Typischer Fall von kaputt repariert!!! Ich habe beim Einbau einer Dectane-ZV und von WAECO-Magig-Lift Efh. geschaltetes Plus benötigt. ( Bilder stelle ich noch ein) Um die Teile nach dem...
von scheidungspapa
5
988
09.04.2006, 04:49
scheidungspapa
Beifahrerseite ZV funktioniert nicht
Hallo Kolleschen, Bei meinem Accord funktioniert das öffnen per ZV an der Beifahrertür nicht mehr. Mal ging es noch und mal nicht. Fakt ist, jetzt gehts gar nicht mehr. Nehme mal an das ein stellmotor hin ist. Meine Frage ... wie demontiert...
von Thundar
7
4.807
12.12.2013, 07:55
svenkmx125
Multiplayermodus funktioniert nicht
Hi, ich habe jetzt zum ersten Mal eine PS. Eine PS3. Nun haben wir uns zwei Spiele ausgeliehen, um erstmal zu "üben". Dazu sind wir gar nicht gekommen, denn es ist einfach nicht möglich, mehr als ein Profil zu erstellen, obwohl auf den...
von Ellen
2
245
13.12.2009, 15:35
Ellen
Hupe funktioniert nicht !!
Guten Abend!! Meine Hupe funktioniert nicht mehr! Ich kann drücken wie ich will aber kein Ton entsteht! Weis jemand was das Problem sein könnte? Gruß...
von David 1.4 ES
7
1.426
19.10.2008, 14:15
Joshivinyljunky
Blinker funktioniert nicht
Hallo, letztens ist meine Honda NSR 50 umgekippt. Nun ist der linke Blinker abgebrochen. Nun habe ich alles wieder angeschlossen und befestigt. Danach habe ich eine Probefahrt gemacht und mir ist dann aufgefallen, dass die beiden Blinker nicht...
von frankyboy93
1
371
30.01.2012, 21:41
Nsr50-Haan
© 2004 - 2025 www.programmierer-forum.de | Communities | Impressum |