如何解决Symfony 5.1和AWS ELB-不受信任的主机错误
我在ELB和Symfony应用程序方面有小问题。在日志中,有时会看到这种类型的错误:
"[Mon Aug 10 10:38:56.440715 2020] [php7:notice] [pid 5697] [client 10.0.2.35:44276] [error] Uncaught PHP Exception Symfony\\Component\\HttpKernel\\Exception\\BadRequestHttpException: "Untrusted Host "54.76.34.25"." at /home/ubuntu/code/admin/vendor/symfony/http-kernel/HttpKernel.php line 82"
我将此代码(来自文档)添加到public/index.php
中:
Request::setTrustedProxies(['127.0.0.1','REMOTE_ADDR'],Request::HEADER_X_FORWARDED_AWS_ELB);
但这根本没有帮助。因此,我修改了下一个代码,并在其他位置也添加了REMOTE_ADDR
if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? false) {
$trustedProxies .= ",REMOTE_ADDR";
Request::setTrustedProxies(
explode(',',$trustedProxies),Request::HEADER_X_FORWARDED_AWS_ELB);
}
但这也没有帮助。还是我在日志中发现了一些错误。
有人知道如何减轻此错误吗?
应用程序在2个(有时是3个)实例上位于AWS ELB后面。
整个文件public/index.php
:
<?php
use App\Kernel;
use Symfony\Component\Dotenv\Dotenv;
use Symfony\Component\ErrorHandler\Debug;
use Symfony\Component\HttpFoundation\Request;
require dirname(__DIR__).'/vendor/autoload.php';
(new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
if ($_SERVER['APP_DEBUG']) {
umask(0000);
Debug::enable();
}
Request::setTrustedProxies(['127.0.0.1',Request::HEADER_X_FORWARDED_AWS_ELB);
if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? false) {
$trustedProxies .= ",Request::HEADER_X_FORWARDED_AWS_ELB);
}
if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? false) {
Request::setTrustedHosts([$trustedHosts,$_SERVER['REMOTE_ADDR']]);
}
$kernel = new Kernel($_SERVER['APP_ENV'],(bool) $_SERVER['APP_DEBUG']);
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request,$response);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。