gpt4 book ai didi

php - SSL 终止 ElasticBeanstalk Symfony

转载 作者:太空宇宙 更新时间:2023-11-03 14:49:28 25 4
gpt4 key购买 nike

我有一个需要 https 或某些页面的应用程序。

我正在尝试使用 ElasticBeanstalk (EB) 部署 Symfony 应用程序。 EB 具有此功能,它将每个请求 http 或 https 请求作为 http 传递给 EC2 实例,并使用 HTTP_X_FORWARDED_PORT 和 HTTP_X_FORWARDED_PROTO 让 EC2 实例知道什么是原始请求协议(protocol)。根据 Symfony 文档,我可以做这样的事情。

Request::setTrustedProxies(['127.0.0.1', $request->server->get('REMOTE_ADDR')]);
Request::setTrustedHeaderName(Request::HEADER_CLIENT_IP, 'HTTP_X_FORWARDED_FOR');
Request::setTrustedHeaderName(Request::HEADER_CLIENT_HOST, 'HTTP_HOST');
Request::setTrustedHeaderName(Request::HEADER_CLIENT_PORT, 'HTTP_X_FORWARDED_PORT');
Request::setTrustedHeaderName(Request::HEADER_CLIENT_PROTO, 'HTTP_X_FORWARDED_PROTO');

在 Controller 中我定义了这样的方案。

/**
*
* @Route("/products", schemes = { "https" })
*/
class ProductsController extends Controller
{
/**
* @Route("/{id}", name="show_product", schemes = { "https" })
* @Method("GET")
*
* @return Response A HTTP response
*/
public function index($id, Request $request)

但它会导致 https -> http -> https 永无止境的循环。有什么办法可以解决这个问题。

最佳答案

我找到了解决方案。我在这里发布解决方案,以便其他人可以从中受益。实际上 Symfony 寻找的是 HTTP header 而不是服务器 header ,所以映射应该是这样的。

Request::setTrustedHeaderName(Request::HEADER_CLIENT_IP, 'X_FORWARDED_FOR');
Request::setTrustedHeaderName(Request::HEADER_CLIENT_HOST, 'HTTP_HOST');
Request::setTrustedHeaderName(Request::HEADER_CLIENT_PORT, 'X_FORWARDED_PORT');
Request::setTrustedHeaderName(Request::HEADER_CLIENT_PROTO, 'X_FORWARDED_PROTO');

关于php - SSL 终止 ElasticBeanstalk Symfony,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35762502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com