【发布时间】: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