背景:我正在研究我在ec2服务器上托管的api。我刚刚完成登录并设置了一个nginx loadbalancer,它重定向到所述服务器的内部ip。域名指向负载均衡器。
这曾经与代码点火器配合使用,但现在我不断遇到“无效主机”问题。
我尝试使用谷歌搜索它,它找到了一些关于trusted proxies
的内容,所以我安装了fideloper制作并尝试了他的帖子(我在laravel-4-trusted-proxies
跟随了fideloper的指南并使用并尝试了他的github上的可信样本:fideloper/TrustedProxy
)但我仍然得到同样的错误:
UnexpectedValueException
Invalid Host "api.myserver.im, api.myserver.im"
// as the host can come from the user (HTTP_HOST and depending on the configuration, SERVER_NAME too can come from the user)
// check that it does not contain forbidden characters (see RFC 952 and RFC 2181)
if ($host && !preg_match('/^\[?(?:[a-zA-Z0-9-:\]_]+\.?)+$/', $host)) {
throw new \UnexpectedValueException(sprintf('Invalid Host "%s"', $host));
}
有人可以帮助我吗?
答案 0 :(得分:1)
我也有同样的问题。我不得不求助于修改UrlGenerator.php文件,这是框架的一部分(我知道不好......)只是为了让它工作。
所以这里是我的"临时"溶液
为app.php配置文件创建一个数组值。 e.g:
return array(
'rooturl' => 'https://www.youractualdomainname.com',
...
接下来在UrlGenerator.php文件中添加以下修改< - (trunk / vendor / laravel / framework / src / Illuminate / Routing / UrlGenerator.php)
<?php namespace Illuminate\Routing;
use Config;
...
protected function getRootUrl($scheme, $root = null)
{
$approoturl = Config::get('app.rooturl');
$root = isset($approoturl) ? $approoturl : $this->request->root();
return $root;
// if (is_null($root))
// {
// $root = $this->forcedRoot ?: $this->request->root();
// }
// $start = starts_with($root, 'http://') ? 'http://' : 'https://';
// return preg_replace('~'.$start.'~', $scheme, $root, 1);
}
请注意,编辑器更新将恢复您的修改。