Nginx:fastcgi-proxy何时被触发?在请求标头之后或在加载请求主体之后?

时间:2013-04-17 15:34:54

标签: nginx timeout request php

当nginx作为网络服务器在前面时,PHP设置max_input_time是否相关?

整个故事:

假设访问者正在上传文件。监听端口80的nginx web服务器将首先获得请求。

Nginx本身有一个client_header_timeout设置,由于文件上传在请求体中处理,因此不应该相关。 client_body_timeout是客户端可以发送此请求主体的最长时间,包含文件和其他一些POST数据。 client_max_body_size可以限制此数据的大小,对吗?

PHP现在等待数据。此时间受max_input_time限制。当它拥有所有数据时,它会检查请求体是否超过它的post_max_size限制,解析它并检查文件是否超过upload_max_filesize限制。现在将执行php脚本,这不应该超过max_execution_time。

但是什么时候我的fastcgi-proxy被加载了?是在加载请求标头之后,是在加载请求主体之后还是在什么时候被触发?

或者......以另一种方式提出这个问题:PHP配置max_input_time是否相关,当我使用PHP-FPM运行PHP时,由nginx webserver支持?当vistor有不好的带宽但是想要上传一个巨大的文件,或者它是否足以增加client_body_timeout的nginx设置时,我是否必须增加这个值?

如果假设不正确,请纠正我!

1 个答案:

答案 0 :(得分:1)

只是给出答案,这对我来说很方便:

我试图上传一个18MB的文件,我在50秒内得到它。 fastcgi-proxy限制为10秒。所以,对我来说,似乎nginx在将它发送到fastcgi-proxy之前缓存了整个请求。

所以,简而言之:不。在我的情况下,我不需要超过max_input_time。

这可能因配置而异。如果有人知道代码并且可以告诉他们依赖哪些选项,那就没问题了。

在IRC上,当nginx将数据发送到fastcgi-proxy时,没人能真正告诉我......

修改

只是想添加另一个资源,这证实了我的建议:

  

不幸的是,PHP仅在上传完成后才获取数据并且[...]

Does session upload progress work with nginx and php-fpm?

中查看已接受的答案