2016-08-11 3 views
0

Auf meinem Server verwende ich nginx auf Port 8081 und Apache auf Port 80 als interner Proxy zu nginx.

und ich habe mehrere Domains .org,.com,.net

Wenn ich die $base_url leer in den Config-Code Zünder verlassen versucht, die richtige Basis-URL zu erraten, zeigt es, dass die Basis-URL ist localhost:8081 statt domain.org oder domain.com

bei der Einstellung ich es manuell:

$base_url="domain.com";

es funktioniert nicht, wenn i-ten öffnen Die anderen Domänen wie domain.org zum Beispiel, weil die $base_url immer noch auf der Domäne .com ist.

Gibt es eine Möglichkeit, Code-Zünder intelligenter raten das richtige $base_url?

+0

Mögliche Duplikat von [HTTP \ _HOST vs. SERVER \ _NAME] (http://stackoverflow.com/questions/2297403/http-host-vs-server- Name) –

Antwort

0

Danke Charlotte für den Tipp.

Nach einiger Suche auf dem HTTP_HOST Server-Variable entdeckte ich, dass apache die HTTP_HOST vergeht wie localhost:8081 nginx.

ich Reverse-Proxy in Apache, um das Proxy-Verhalten zu machen:

ProxyPass/http://localhost:8081/ ProxyPassReverse/http://localhost:8081/

ich die Documentation von Apache gesucht und gefunden eine Richtlinie ProxyPreserveHost genannt

Bei Aktivierung dieser Option Übergibt die Host: -Zeile von der eingehenden Anfrage an den Proxy-Host anstelle des in der ProxyPass-Leitung angegebenen Hostnamens.

i aktiviert werden, damit durch diese Zeile hinzu:

ProxyPreserveHost On

Und es hat funktioniert, jetzt codeigniter HTTP_HOST richtig lesen kann und die $base_url richtig zu machen.

0

setzen Sie base_url in config.php.
wie diese
$config['base_url'] = 'actual url'
oder
$config['base_url'] = 'http://'. $_SERVER['HTTP_HOST'].'/';

Verwandte Themen