Nginx:什么时候触发fastcgi-proxy ?在请求头或请求体加载之后


Nginx: When is the fastcgi-proxy triggered? After request-header or after request-body is loaded?

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

整个故事:

以访客上传文件为例。nginx的web服务器,监听端口80,将首先收到请求。

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运行使用PHP- fpm,由nginx web服务器支持的PHP ?当访问者带宽不好但想要上传一个大文件时,我是否必须增加这个值,或者增加nginx设置client_body_timeout是否足够?

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

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

我试着上传一个18MB的文件,我在50秒内就完成了。fastcgi-proxy限制为10秒。处理步骤所以,对我来说,似乎nginx在将其发送到fastcgi-proxy之前缓存了整个请求。

所以,简而言之:No。我不需要超过max_input_time

这可能因配置而异。如果有人知道代码,并且知道这取决于哪些选项,那就太好了。

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

编辑:

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

不幸的是PHP只有在上传完成后才能获取数据[…]

请参阅在nginx和php-fpm中会话上传进度是否工作?