使codeigniter以正确的方式猜测$ baseurl

时间:2016-08-11 10:23:40

标签: php apache nginx codeigniter-3

在我的服务器上,我在端口8081上使用nginx,在端口80上使用apache作为nginx的内部代理。

我有多个域.org,.com,.net

当我在配置代码中留下$base_url为空时,igniter会尝试猜测正确的基本网址,它会显示基本网址为localhost:8081而不是domain.org或{{1} }

当我手动设置时:

domain.com

当我打开$base_url="domain.com";等其他域名时,它不起作用,因为domain.org仍位于$base_url域。

有没有办法让代码点火器更聪明地猜测正确的.com

1 个答案:

答案 0 :(得分:0)

感谢夏洛特提示。

在对HTTP_HOST服务器变量进行一些搜索后,我发现apache正在将HTTP_HOST传递给nginx作为localhost:8081

我在apache中使用反向代理来制作代理行为:

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

我搜索了Documentation apache并找到了一个名为ProxyPreserveHost

的指令
  

启用后,此选项会将传入请求中的Host:行传递给代理主机,而不是ProxyPass行中指定的主机名。

我通过添加以下行来启用它:

ProxyPreserveHost On

它工作正常,现在codeigniter可以正确阅读HTTP_HOST并使$base_url正确。