2016-08-11 10 views
0

私のサーバーでは、nginxをポート8081で使用していて、Apacheのポート80をnginxの内部プロキシとして使用しています。

と私は設定コードイグナイタで空$base_urlを残すとき、私は複数のドメイン.org,.com,.net

を持っているが、右のベースURLを推測しようとすると、それはベースURLがlocalhost:8081代わりのdomain.orgまたはdomain.com

であることを示しています私はそれを手動で設定する場合:

$base_url="domain.com";

を私は目を開いたとき、それは動作しません。例えば$base_urlが依然として.comドメインにあるので、domain.orgのような他のドメインを使用することができます。

コードイグナイターをよりスマートにする方法はありますか?$base_url

+0

[サーバー\ _NAME対HTTP \ _HOST]の可能性のある重複などの
(http://stackoverflow.com/questions/2297403/http-host-vs-server-名) –

答えて

0

チップシャーロットに感謝します。

HTTP_HOSTサーバ変数で検索したところ、apacheHTTP_HOSTlocalhost:8081としてnginxに渡していることがわかりました。

私はプロキシ動作を行うためにはApacheでリバースプロキシを使用

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

、このオプションを有効にすると、私は、ApacheのDocumentationを検索し、ProxyPreserveHost

と呼ばれるディレクティブを見つけましたProxyPass行で指定されたホスト名ではなく、受信した要求からプロキシされたホストにHost:行を渡します。

私はこの行を追加することで、それを有効に:

ProxyPreserveHost On

そして、それは今、CodeIgniterのHTTP_HOST権利を読んで、$base_urlを右にすることができ、働いていました。

0

sett base_url in config.php。この
$config['base_url'] = 'actual url'
または
$config['base_url'] = 'http://'. $_SERVER['HTTP_HOST'].'/';

関連する問題