使用nginx上传文件的结果为408 / EAGAIN

时间:2018-10-19 09:09:33

标签: linux laravel nginx

我有一个在laravel forge上配置的Ubuntu服务器18.04上运行的php应用程序。除了上传具有multipart / form-data html表单的图像外,其他一切都正常。这会导致错误的连接超时。

查看nginx时,我尝试上传文件时发现了以下消息:

[pid 12937] setsockopt(16, SOL_TCP, TCP_NODELAY, [1], 4) = 0
[pid 12937] accept4(11, {sa_family=AF_INET, sin_port=htons(58384), sin_addr=inet_addr("MY_IP")}, [112->16], SOCK_NONBLOCK) = 16
[pid 12937] accept4(11, 0x7ffc48f7dd00, [112], SOCK_NONBLOCK) = -1 EAGAIN (Resource temporarily unavailable)
[pid 12937] recvfrom(16, "\26", 1, MSG_PEEK, NULL, NULL) = 1

“ EAGAIN”消息表示套接字没有可用的连接。但是,我发现这很奇怪,因为我是向该服务器发送请求的唯一一个,并且nginx的“ worker_connections”设置为768。

更新:我发现只有在使用插入了以太网的工作笔记本电脑时才会出现此问题。办公室中的其他任何机器都可以正常工作,我的工作笔记本电脑也可以通过WiFi正常工作。因此,这不是服务器端的问题,但必须通过我的以太网连接进行一些操作。我已经与在笔记本电脑上没有此问题的同事交换了以太网电缆,这并没有改变任何事情。

3 个答案:

答案 0 :(得分:0)

408是客户端超时,表示您的浏览器或客户端正在关闭连接。它不是服务器,而是如果您使用自定义客户端,则需要调整客户端。

如果您使用的是标准浏览器,那么处理这种情况的最佳方法是抛出客户端JS,该JS会不断发送保持活动请求,以确保浏览器不会使连接超时。

为了进行调试,请尝试通过在network.http.connection-timeout中的about:config来解决firefox浏览器中的超时问题

如果解决了,则实施Keepalive

答案 1 :(得分:0)

您可以确保服务器端没有限制,输出是什么?

ulimit -a

答案 2 :(得分:0)

您知道,“ 408请求超时”消息是HTTP状态代码,当对服务器的请求花费的时间超过服务器分配的超时时间时,将返回给客户端。

如果出现此错误(408),则可以在服务器上检查以下项目:

  • php-pfm配置(不限制请求)
  • 检查nginx.conf中的以下项目:
    • client_body_timeout
    • client_header_timeout
    • keepalive_timeout

如果您仍然有问题,可以阅读这篇文章:408 Request Timeout: What It Is and How to Fix It