我有一个服务器正在运行:
在浏览器上有一个 ajax 脚本,每 5 秒向 php 文件发送一个查询,以更新数据库上的时间戳,该脚本在其他服务器上运行良好,但这里用户不多,它会记录以下错误:
[Mon Dec 05 09:11:39.575035 2016] [proxy_fcgi:error] [pid 7831:tid 140159538292480] (70008)部分结果有效,但处理不完整:[client 172.30.197.200:64422] AH01075:将请求分派到:时出错: (读输入大队),referer:http://10.200....file.php
我不知道它是什么以及如何修复它。我搜索了整个网络,但没有找到太多,任何提示将不胜感激。
编辑1:
我将错误模式切换为调试,错误的完整日志如下:
[Wed Dec 07 08:55:13.465599 2016] [authz_core:debug] [pid 5461:tid 139687427467008] mod_authz_core.c(809): [client 172.31.42.163:54432] AH01626: authorization result of Require all granted: granted, referer: http://10.200.200.214/sala.php?sala=Unica
[Wed Dec 07 08:55:13.465613 2016] [authz_core:debug] [pid 5461:tid 139687427467008] mod_authz_core.c(809): [client 172.31.42.163:54432] AH01626: authorization result of <RequireAny>: granted, referer: http://10.200.200.214/sala.php?sala=Unica
[Wed Dec 07 08:55:13.465634 2016] …
启用后<Proxy ... enablereuse=on max=10>
我开始收到奇怪的响应。刷新当前页面时,主请求加载不同的响应;例如空白页面、针对单独客户端的响应或来自请求页面上 CSS 文件的 404 响应。
删除enablereuse
,修复了奇怪的响应,但阻止了来自同一用户的并发请求,这意味着每个请求都是单独提供的。
例如:在同一虚拟主机域上打开两个不同 URL 的浏览器选项卡,如果第一个请求的页面需要 5 秒才能加载,则在第一个选项卡完成之前不会加载第二个选项卡。
我试图通过允许同一客户端以并发非阻塞方式同时执行多个请求来防止这种情况。
服务器环境
CentOS 6.10 x64
php 5.6.37 Remi
Apache 2.4.33 IUS
Run Code Online (Sandbox Code Playgroud)
MPM 事件配置
<IfModule mpm_event_module>
ServerLimit 100
StartServers 4
ThreadLimit 64
MaxRequestWorkers 100
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxConnectionsPerChild 1000
ListenBacklog 511
</IfModule>
Run Code Online (Sandbox Code Playgroud)
虚拟主机配置(4 中的 1 - 除 IP 地址、UDS 和服务器名称外均相同)
<VirtualHost 192.168.1.71:443>
ServerName example.com:443
DocumentRoot /home/example/example.com
<IfModule mod_ssl.c>
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/certs/example.crt
SSLCertificateKeyFile /etc/httpd/ssl/private/example.key
SSLCertificateChainfile /etc/httpd/ssl/certs/example.ca-bundle
<IfModule mod_setenvif.c>
SetEnvIf …
Run Code Online (Sandbox Code Playgroud) 我不确定这是 php、apache 还是 iptables 配置问题,但在尝试访问.php
文件时收到以下错误。如果您需要更多信息来帮助我诊断,请告诉我,我不知道接下来要检查什么。谢谢你。
error.log
:
[Thu May 08 16:43:15.392784 2014] [proxy:error] [pid 23112] (111)Connection refused: AH00957: FCGI: attempt to connect to 127.0.0.1:9000 (*) failed
[Thu May 08 16:43:15.392891 2014] [proxy_fcgi:error] [pid 23112] [client 74.164.254.206:52788] AH01079: failed to make connection to backend: 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
我按照本指南和运行的 PHP 5.5.9 和 Apache 2.4.7
我确实加载了mod_proxy
和mod_proxy_so
模块:
# grep LoadModule /etc/apache2/apache2.conf
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_fcgi_module /usr/lib/apache2/modules/mod_proxy_fcgi.so
Run Code Online (Sandbox Code Playgroud)
这是 ProxyPassMatch 指令:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/$1
Run Code Online (Sandbox Code Playgroud)
我还尝试将 UDS 与以下指令一起使用,但 apache 配置测试抱怨绝对 …
我在 Apache 2.4.25 上有一个虚拟主机,PHP-FPM 7.1.4 通过 mod_proxy_fcgi 连接,如下所示:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /srv/www/example.com
<Directory /srv/www/example.com>
AllowOverride All
Require all granted
</Directory>
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
<FilesMatch ".+\.ph(p[3457]?|t|tml)$">
SetHandler "proxy:unix:/run/php/example.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
大多数应用程序在此设置下都能完美运行,但有一个应用程序使用 PATH_INFO 来提取请求。该应用程序在其 .htaccess 中有类似的内容:
RewriteEngine On
RewriteCond $1 ^index\.php
RewriteRule ^(.*)$ - [PT,L]
RewriteRule ^(.*)$ index.php/$1 [PT,L]
Run Code Online (Sandbox Code Playgroud)
简单地说,所有不是的东西都index.php
应该作为路径传递给它。访问 URL http://example.com/index.php/test可以正常工作并按[PATH_INFO] => /test
预期显示,但访问http://example.com/test 会死
AH01071: Got error 'Primary script unknown\n'
Run Code Online (Sandbox Code Playgroud)
LogLevel trace6
mod_rewrite 和 mod_proxy_fcgi 的设置表明重定向已正确完成,并且正确的路径也传递给 PHP-FPM。
/index.php/test 的跟踪:
[Sat Apr …
Run Code Online (Sandbox Code Playgroud) 我已经根据本教程( https://wiki.apache.org/httpd/PHP-FPM )或多或少配置了一个网络服务器,但我无法让 PHP 工作。HTML 文件可以正常使用。我收到以下错误消息:
mod_authz_core.c(802): [client <myip>:36570] AH01626: authorization result of Require all denied: denied
mod_authz_core.c(802): [client <myip>:36570] AH01626: authorization result of <RequireAny>: denied
127.0.0.1 [client <myip>:36570] AH01630: client denied by server configuration: proxy:fcgi://127.0.0.1:9000/var/www/html/test.php
Run Code Online (Sandbox Code Playgroud)
这是我的 PHP 文件:
www@<server>:/var/www/html$ ls -l
-rw-rw---- 1 www www-data 26 Sep 6 09:14 test.php
Run Code Online (Sandbox Code Playgroud)
如您所见,该文件属于“www”。网络服务器和“php-fpm”作为“www-data”运行。
这是“apache.conf”的基本配置:
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride None
Require all …
Run Code Online (Sandbox Code Playgroud)