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 (将#修改为@)