On my server i'm using nginx on port 8081
and apache on port 80
as an internal proxy to nginx.
And i have multiple domains .org,.com,.net
When i leave the $base_url
empty in the config code igniter tries to guess the right base url , it shows that the base url is localhost:8081
instead of domain.org
or domain.com
When i set it manually:
$base_url="domain.com";
It doesn't work when i open the other domains like domain.org
for example because the $base_url
is still on the .com
domain .
Is there any way to make code igniter smarter guessing the right $base_url
?
Thanks Charlotte for the tip.
After some search on the HTTP_HOST
server variable i discovered that apache
is passing the HTTP_HOST
to nginx as localhost:8081
.
I use reverse proxy in apache to make the proxy behavior:
ProxyPass / http://localhost:8081/
ProxyPassReverse / http://localhost:8081/
I searched the Documentation of apache and found a directive called ProxyPreserveHost
When enabled, this option will pass the Host: line from the incoming request to the proxied host, instead of the hostname specified in the ProxyPass line.
i enabled it by adding this line:
ProxyPreserveHost On
And it worked , now codeigniter can read HTTP_HOST
right and make the $base_url
right.
sett base_url in config.php
.
like this$config['base_url'] = 'actual url'
or$config['base_url'] = 'http://'. $_SERVER['HTTP_HOST'].'/';