【问题标题】:Windows bash NGINX not completing successful PHP-FPM actionWindows bash NGINX 未完成成功的 PHP-FPM 操作
【发布时间】:2018-12-03 11:55:44
【问题描述】:

这是一个很奇怪的问题……

操作系统:Windows 10
环境:Ubuntu Bash
Nginx : nginx/1.10.3 (Ubuntu)
PHP : PHP 7.2.1-1+ubuntu16.04.1+deb.sury.org+1

当我从 CLI 直接对 PHP-FPM 进行测试时,响应很好。

喜欢...

SCRIPT_NAME=/status SCRIPT_FILENAME=/status REQUEST_METHOD=GET cgi-fcgi -bind -connect /run/php/php7.2-fpm.sock

连接到这个状态系统https://easyengine.io/tutorials/php/fpm-status-page/

在 Nginx 启动时,它会在日志中给出这些错误

2018/06/24 15:08:45 [alert] 6772#6772: *2 打开套接字 #15 留在连接 4 中

2018/06/24 15:08:45 [警报] 6772#6772: aborting`

但是如果我连接到http://127.0.0.1/status 来测试它(或任何本地 url)......请求会一直挂起,直到它达到 502。仅使用这些标题:

连接:保持活动状态
内容编码:gzip
内容类型:文本/html;字符集=UTF-8
日期:2018 年 6 月 24 日星期日 22:17:13 GMT
服务器:nginx/1.10.3 (Ubuntu)
传输编码:分块

这个错误显示在 nginx 日志中

2018/06/24 15:09:48 [错误] 6834#6834: *1 上游超时 (110: 连接超时)同时读取上游,客户端:127.0.0.1, 服务器:_,请求:“GET /status HTTP/1.1”,上游: “fastcgi://unix:/run/php/php7.2-fpm.sock:”,主机:“127.0.0.1”

但是,如果我在 PHP-FPM 服务挂起时将其终止,则响应会完美地显示在浏览器中。就像直接 CLI 请求一样。

nginx 配置的其余部分是默认设置。我将 sock 用于 fpm,而不是 ip:port。 ip:port 设置甚至无法解决一大堆其他问题。

很明显,FPM 运行正常......但由于某种原因,Nginx 特别无法确定响应何时完成发送,Nginx 只是挂起等待它被视为完成,这永远不会发生......所以页面错误。我一直在搜索我可以在网上找到的每一个半相似的解决方案,但似乎没有什么是我的相同问题;他们的方法也不适合我。

有什么想法吗?谢谢!

【问题讨论】:

    标签: php windows ubuntu nginx windows-subsystem-for-linux


    【解决方案1】:

    我通过将以下内容添加到 /etc/nginx/nginx.conf 中的 http 块来解决此问题:

    fastcgi_buffering off;
    

    【讨论】:

    • 如果我需要开启缓冲怎么办?还有其他解决方法吗?
    猜你喜欢
    • 2012-01-17
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 2012-02-12
    相关资源
    最近更新 更多