使用Laravel验证阵列时出现NGINX坏网关错误

zfycwa2u  于 2022-11-02  发布在  Nginx
关注(0)|答案(2)|浏览(178)

我有一个奇怪的问题。我的应用程序中的一切都运行得很好,包括简单的验证规则。
但是,当我尝试验证数组时,NGINX却给我一个502 bad gateway错误。
例如,以下方法可以正常工作:

$this->validate($request, [
        'name' => 'required',
    ]);

但这会导致坏网关错误:

$this->validate($request, [
        'steps.*.name' => 'required',
        'steps.*.title' => 'required',
        'steps.*.type' => 'required',
        'steps.*.answer_options' => 'nullable|required_if:steps.*.type,Question',
        'steps.*.input_type' => 'nullable|required_if:steps.*.type,Input',
    ]);

我已尝试在服务器配置中增加内存限制等,但没有任何解决问题的方法...如何更正此问题并确保生产服务器上不会发生此问题?

jgovgodb

jgovgodb1#

似乎只有当你有一个大的POST请求时才会出现问题。你能试着把这些添加到你的nginx.conf文件中吗:

proxy_buffer_size   128k;
proxy_buffers   4 256k;
proxy_busy_buffers_size   256k;

您可以根据需要增加这些值,具体取决于POST数据的大小。

juud5qan

juud5qan2#

我在尝试使用在Mac上运行的Laravel v8验证阵列时遇到了同样的问题。
我以前从未见过它,但我最终在~/.config/valet/Log/nginx-error.log中检查了我的日志,结果显示upstream sent too big header while reading response header from upstream
正如在@aceraven777的回答中提到的,你需要更改一些nginx设置,下面的方法对我有效:
使用以下命令创建~/.valet/Nginx/all.conf

proxy_buffer_size   4096k;
proxy_buffers   128 4096k;
proxy_busy_buffers_size   4096k;

将此附加到/usr/local/etc/nginx/fastcgi_params

fastcgi_buffer_size 4096k;
fastcgi_buffers 128 4096k;
fastcgi_busy_buffers_size 4096k;

感谢@elaman对GitHub代客泊车问题的上述步骤。
我运行了valet restart之后,我的页面开始输出验证错误,而不是502'ing。你可能只是可以重新启动nginx,而不是作为一个整体代客,但我从来没有机会尝试,因为它为我工作的第一次。

相关问题