我已经设置了一个DMZ来运行一个网站。大多数代码都在运行Debian Release 7.0(wheezy)64位的应用程序服务器上。我还有一台运行CentOS 6.5的Web服务器。它充当应用程序服务器的代理。我在两者上都设置了LAMP,我的网页都是用PHP编写的。 Web服务器上的PHP脚本在应用程序服务器上调用PHP脚本。应用程序服务器脚本调用长时间运行(> 1分钟)的可执行文件(使用C ++开发)。 60秒后(由我的手表计时),脚本失败并显示以下消息。
Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request POST /appServer/scriptName.php.
Reason: Error reading from remote server
Apache/2.2.15 (CentOS) Server at sitename.com Port 80
我在应用程序服务器PHP脚本中注释掉了代码,并将问题缩小到长期运行的C ++可执行文件。我也在shell中运行可执行文件没有任何问题。因此显然存在超时问题,它似乎与Web服务器相关联。我最近才在Web服务器上用Centos 6.5替换了旧版本的Ubuntu,在我这样做之前我没有遇到这个问题。此外,PHP代码与我切换之前的代码相同,并且在此之前它没有给我这个问题。因此,我确信问题在于Web服务器上的某些内容以及我在新系统上使用php或apache进行的设置之一。
我在Web服务器上编辑了/etc/php.ini,并将所有未注释的60秒时间限制(max_input_time,default_socket_timeout,mysql.connect_timeout)从60秒更改为600秒。 60秒后我仍然会收到上述代理错误。
答案 0 :(得分:1)
解。
在(CentOS)Web服务器上,编辑/etc/httpd/conf/httpd.conf
加入
行ProxyPass /appServer/ http://[private IP address]/ timeout=600 Keepalive=On
专门添加
timeout=600 Keepalive=On
一部分。
我还重启了apache以保证安全。