nginx 中的 Symfony https + varnish + apache http = 重定向循环或
Symfony in nginx https + varnish + apache http = redirect loop or
我有配置
nginx 中的 Symfony https + varnish + apache http = redirect loop
我设置路由方案以获取链接 https : ['https']
但得到重定向循环为什么?
看起来 symfony 不仅创建了与 https 的链接,而且 return 如果获得 http 则重定向 - 我需要 http 页面用于在 varnish 中缓存但链接 https。
更新1
当我在路由中没有设置模式并且 运行 页面通过 https 时几乎一切正常 - 没有
1 fos 路由它创建绝对 http 链接
2 liip 想象同样的情况
如果您在访问页面时尽管使用了 https 但仍收到重定向到 https 的信息,则原始协议不会转发到处理响应的后端。
有一个 header X-Forwarded-Proto
应该设置为在通过任何代理之前包含原始协议。 Symfony 应该尊重这个 header 并接受请求是安全的而不是重定向(并且如果合适的话也将所有链接设置为 https:// urls)
您需要配置 Apache(我假设它正在终止 https 连接并具有证书)以设置此 header 以匹配原始请求协议。
看起来您可能需要在 Symfony 遵守 headers Symfony Docs for proxies
之前信任代理
// 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
);
我有配置 nginx 中的 Symfony https + varnish + apache http = redirect loop
我设置路由方案以获取链接 https : ['https'] 但得到重定向循环为什么? 看起来 symfony 不仅创建了与 https 的链接,而且 return 如果获得 http 则重定向 - 我需要 http 页面用于在 varnish 中缓存但链接 https。
更新1 当我在路由中没有设置模式并且 运行 页面通过 https 时几乎一切正常 - 没有
1 fos 路由它创建绝对 http 链接
2 liip 想象同样的情况
如果您在访问页面时尽管使用了 https 但仍收到重定向到 https 的信息,则原始协议不会转发到处理响应的后端。
有一个 header X-Forwarded-Proto
应该设置为在通过任何代理之前包含原始协议。 Symfony 应该尊重这个 header 并接受请求是安全的而不是重定向(并且如果合适的话也将所有链接设置为 https:// urls)
您需要配置 Apache(我假设它正在终止 https 连接并具有证书)以设置此 header 以匹配原始请求协议。
看起来您可能需要在 Symfony 遵守 headers Symfony Docs for proxies
之前信任代理// 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
);