» 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: 52434
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
270
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
596
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.018
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
223
25.08.2023, 18:02
JP_Razor
KUPPLUNG funktioniert nicht!
Hallo... hatte heute in der Früh ziemlich tiefe temperaturen!!! :( so ca. -20 Grad... mein Civic is nich angegangen... wollte ihn anrollen aber die kupplung hat nicht funktioniert... ist wohl irgendwie eingefrohren... hat wer eine erklärung...
von vader87
14
1.417
30.01.2006, 11:29
Care
Selbstdiagnose funktioniert nicht...
Bin grad in der Werkstatt bei uns und versuche eine Selbstdiagnose zumachen an meinen EJ2 hab auch den blauen 2 poligen Stecker gefunden und überbrückt, aber die Motorlampe macht nix... was könnte los sein? Hat jemand einen Stromlaufplan fürn...
von HondaBank
7
350
21.03.2010, 20:44
HondaBank
Bremslicht funktioniert nicht !?
Hallo liebe Gemeinde, besitze ein Honda Civic EJ9 1.4i. Bei meiner super Karre hab ich neulich bemerkt, dass meine beiden Bremsleuchten, an den Heckscheinwerfern, nicht funktionieren. Als erstes ging ich davon aus, dass die Birnen defekt sind....
von bbbccc
3
2.635
22.05.2010, 16:19
bbbccc
Scheibenwischanlage funktioniert nicht
Hi meine Scheibenwischanlage funktioniert nicht, ich denke, dass der Motor hinüber ist. Meine Fragen nun sind, habt ihr vielleicht noch andere Tips und zweitens wo sitzt der Motor und ist es aufwendig diesen...
von intes
5
292
26.10.2011, 17:07
Hondadriver eg3
BMW F30 Verstärker funktioniert nicht
Hallo alle zusammen, ich habe bei meinem BMW F30 mit Standard Sound Ausstattung eine Verstärker samt neuen Kabelbaum nachgerüstet. Also mit einem Ende des Kabelbaumes das audio-Signal bei den Untersitzwoofern auf Fahrer und Beifahrer Seite abgegriffen...
von DavF30
0
191
07.08.2024, 13:47
DavF30
© 2004 - 2025 www.programmierer-forum.de | Communities | Impressum |