我正在为竞赛活动制作一个网络应用程序,需要在网页上创建/编辑/删除按钮,这样我就不需要在后端执行所有操作。
它是基于 PHP/Symfony 构建的,我使用 TWIG 作为模板处理程序。
在 TWIG 文件中,我有代码
{% if is_granted("ROLE_ADMIN") %}
;这在我当地的环境中完全有效。
但是当我使用生产环境时,这个
{% if is_granted("ROLE_ADMIN") %}
逻辑的两个实例使页面出现上游错误:
2023/10/04 14:34:10 [error] 309322#309322: *230714 upstream sent too big header while reading response header from upstream, client: ***.***.**.**, server: ***, request: "GET /favicon.ico HTTP/2.0", upstream: "fastcgi://unix:/run/php/php8.2-fpm.sock:", host: "***", referrer: "https://***/1/competition-locations"
(隐藏网站和IP地址)
我找到了原因,这只是
{% if is_granted("ROLE_ADMIN") %}
行 - 内容不会影响任何内容,当我删除此行时,页面立即工作。
这只发生在该行的两个实例上,即使整个项目中有超过 25 个实例。
我已经尽可能地调试了它(只是完全删除了
{% if is_granted("ROLE_ADMIN") %}
块),这显然使页面正常工作,但我需要这些按钮存在,所以我不知道什么会导致此错误。
老实说,我不知道是什么原因导致这个问题以及如何发生这种情况,我以前从未遇到过这个问题,甚至我经常使用 Symfony 的老板也不知道任何事情。
您的产品环境似乎正在使用 nginx。 我可以建议你检查一下你的 nginx 配置吗? 该错误消息很可能与缓冲区大小过低有关。
查看您的
nginx.conf
或 vhost 这部分来调整相应的值。
server {
proxy_busy_buffers_size 512k;
proxy_buffers 4 512k;
proxy_buffer_size 256k;
# rest of the nginx config below #
}
您可以在此处找到有关配置的更多信息。