我问你一个问题,因为我浏览了所有的网页,但我没有找到任何答案。
当我使用带有“controller”功能的twig中的“render_esi”函数时,会显示目标页面(受access_control保护),但是当达到缓存时间限制时(在我的情况下是10秒)并且我刷新了页面,我被重定向到登录页面,因为我丢失了会话(session_id已更改)。
{{ render_esi(controller('MyBackBundle:Parts:leftSideBar')) }} => Redirected when cache expire
{{ render_esi(url('my_back_parts_sidebar')) }} => Working Good all the time, no session expiration
我确切地说我使用了Symfony2集成的反向代理而不是Varnish。
我不想为我的应用程序的每个子请求部分创建特定路由。
为了方便起见,我想使用Symfony的“_fragment”系统,主要是为了安全。
我在另一个错误的转折处找到了巧合的解决方案。
默认情况下,Symfony不会给代理带来信心(主要是激活了Symfony AppCache)。
您必须将127.0.0.1(Symfony Reverse代理)添加到可信代理列表中,并且esi不会注销您并重新定向到主页。
来自Symfony french的文档:http://symfony.com/fr/doc/current/components/http_foundation/trusting_proxies.html
“Lorsque vous utilisez le reverse proxy interne de Symfony(AppCache.php),assurez vous d'avoirajouté127.0.0.1àlaliste des proxies de confiance。”
希望它对某人有所帮助。