如何修复 apache2“proxy_http:error”AH01102:从远程服务器 localhost:4382 读取状态行时出错

如何修复 apache2“proxy_http:error”AH01102:从远程服务器 localhost:4382 读取状态行时出错

如何修复 apache2“proxy_http:error”AH01102:从远程服务器 localhost:4382 读取状态行时出错。

我有一个 apache2 网络服务器,用于在后端提供一些 nodejs 应用程序。

Apache2 网络服务器版本:服务器版本:Apache/2.4.41 (Ubuntu) 服务器构建时间:2019-08-21T20:43:05

Nodejs版本:v10.18.1

Mongo 数据库版本:v4.0.15

我们所有的后端应用程序“proxy_http:error”AH01102:从远程服务器 localhost:4382 读取状态行时出错,以下错误(参见日志)一直困扰着我们。

[Mon Apr 27 20:09:05.697271 2020] [proxy_http:error] [pid 26792:tid 140063099688704] (70007)The timeout specified has expired: [client 178.153.198.97:52385] AH01095: prefetch request body failed to 127.0.0.1:4381 (localhost) from 178.153.198.97 (), referer: https://www.example.com/sub-admin/menus/add-menu
[Mon Apr 27 20:21:51.617095 2020] [proxy_http:error] [pid 26764:tid 140062901626624] (104)Connection reset by peer: [client 178.153.195.206:61268] AH01102: error reading status line from remote server localhost:4382, referer: http://www.example.com/restaurant/dashboard
[Mon Apr 27 20:21:51.617117 2020] [proxy:error] [pid 26764:tid 140062901626624] [client 178.153.195.206:61268] AH00898: Error reading from remote server returned by /restaurant/assets/img/avatars/5.jpg, referer: http://www.example.com/restaurant/dashboard
[Tue Apr 28 03:51:28.498423 2020] [proxy_http:error] [pid 26793:tid 140062868055808] (104)Connection reset by peer: [client 89.211.117.185:57622] AH01102: error reading status line from remote server localhost:4382, referer: http://www.example.com/restaurant/dashboard
[Tue Apr 28 03:51:28.498455 2020] [proxy:error] [pid 26793:tid 140062868055808] [client 89.211.117.185:57622] AH00898: Error reading from remote server returned by /restaurant/static/css/main.f8d32764.chunk.css, referer: http://www.example.com/restaurant/dashboard


到目前为止我已经尝试了这些方法来修复这个错误。

  1. ProxyPreserveHost On-没有起到作用。

  2. disablereuse=on。它不起作用。

  3. 超时=600,然后超时=900。没有用。

  4. 重试=1 获取=3000 超时=600 Keepalive=On。无效。

  5. SetEnv 强制代理请求-1.0 1
    SetEnv 代理无存活 1

工作时间很短(12 小时)。同样的错误再次出现,频率与之前几乎相同。

  1. SetEnv 代理初始未池化 1
    SetEnv 代理不存活 1

这个程序运行了 24 小时。然后 24 小时后,这个错误又重现了。虽然这次 24 小时后,错误一小时才出现一次,有时两小时才出现一次,有时两到五小时才出现一次。

1Q. 首先为什么会发生这个错误。

2Q. 此错误是否仅因为 apache 而发生,或者 nodejs 应用程序也可能是罪魁祸首
(但是当此 apache 错误发生时,几乎没有任何应用程序的错误日志)。

3Q. 如何/什么是识别、诊断和解决此错误的最佳方法,因为在搜索了各种论坛后,似乎没有人能够完美地解决此错误或对此有正确的答案,而且从 2006 年以来一直如此,查看一些论坛。

这是我的 apache 配置文件

<VirtualHost *:443>
  ServerAdmin [email protected]
  ServerName  www.example.com
  ServerAlias example.com

  SSLEngine On
  SSLProxyEngine On
  SSLCertificateFile "/etc/ssl/private/server.crt"
  SSLCertificateKeyFile "/etc/ssl/private/server.key"


  ProxyRequests Off

    #Admin
    ProxyPass /admin http://localhost:4380/
    ProxyPassReverse /admin http://localhost:4380/
    SetEnv proxy-nokeepalive 1
    SetEnv proxy-initial-not-pooled 1


    ProxyPass /restaurant http://localhost:4382/
    ProxyPassReverse /restaurant http://localhost:4382/
    SetEnv proxy-nokeepalive 1
    SetEnv proxy-initial-not-pooled 1


    ProxyPass /sub-admin http://localhost:4385/
    ProxyPassReverse /sub-admin http://localhost:4385/
    SetEnv proxy-nokeepalive 1
    SetEnv proxy-initial-not-pooled 1


    #API
    ProxyPass /admin-api/ http://localhost:4381/
    ProxyPassReverse /admin-api/ http://localhost:4381/
    SetEnv proxy-nokeepalive 1
    SetEnv proxy-initial-not-pooled 1


    ProxyPass /restaurant-api/ http://localhost:4379/
    ProxyPassReverse /restaurant-api/ http://localhost:4379/
    SetEnv proxy-nokeepalive 1
    SetEnv proxy-initial-not-pooled 1


</VirtualHost>


答案1

如果你查看你的日志,首先出现(70007)指定的超时已过期:[客户端 178.153.198.97:52385] AH01095日志的其余部分就是这种情况的结果。

这里发生的事情是,您的 localhost 实现需要很长时间才能返回答案。也许您可以在您的实现中验证为什么会这样,并尝试对其进行优化。但在 apache 中,您可以定义等待 localhost 实现的连接时间和超时时间

ProxyPass /餐厅 http://localhost:4382/连接超时=[时间(秒)]超时=[时间(秒)]

例如 60 秒(1 分钟)

ProxyPass /餐厅 http://localhost:4382/连接超时=60 超时=60

相关内容