在我的服务器上,我在端口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
?
答案 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
正确。