nginx https+中的Symfony;清漆&x2B;apache http=重定向循环或

nginx https+中的Symfony;清漆&x2B;apache http=重定向循环或,symfony,varnish,liipimaginebundle,fosjsroutingbundle,Symfony,Varnish,Liipimaginebundle,Fosjsroutingbundle,我有配置 nginx https+varnish+apache http=重定向循环中的Symfony 我放置路由方案以获取链接https:['https'] 但是为什么呢? 看起来symfony不仅使用https创建链接,而且在获取http时返回重定向-我需要http页面用于varnish中的缓存,还需要https链接 更新1 当我在路由中不使用任何模式并在https上运行页面时,几乎所有内容都可以正常工作-没有 1 fos路由它创建绝对http链接 2 liip设想同样的情况如果您在访问页面

我有配置 nginx https+varnish+apache http=重定向循环中的Symfony

我放置路由方案以获取链接https:['https'] 但是为什么呢? 看起来symfony不仅使用https创建链接,而且在获取http时返回重定向-我需要http页面用于varnish中的缓存,还需要https链接

更新1 当我在路由中不使用任何模式并在https上运行页面时,几乎所有内容都可以正常工作-没有

1 fos路由它创建绝对http链接


2 liip设想同样的情况

如果您在访问页面时尽管使用了https,但仍得到了https重定向,则原始协议不会被转发到处理响应的后端

有一个头
X-Forwarded-Proto
,它应该设置为在原始协议通过任何代理之前包含原始协议。Symfony应尊重此标头,并接受请求是安全的,而不是重定向的(如果合适,还应将所有链接设置为https://url)

您需要配置Apache(我假设它正在终止https连接并具有证书),以将此头设置为与原始请求协议匹配

在Symfony遵守头文件之前,您可能需要信任代理文件


这个问题需要添加所有必要的配置。
// public/index.php

// ...
$request = Request::createFromGlobals();

// tell Symfony about your reverse proxy
Request::setTrustedProxies(
    // the IP address (or range) of your proxy
    ['192.0.0.1', '10.0.0.0/8'],

    // trust *all* "X-Forwarded-*" headers
    Request::HEADER_X_FORWARDED_ALL
);