Apache 代理后面的 Erpnext 服务器不断引发错误 503 服务不可用

Apache 代理后面的 Erpnext 服务器不断引发错误 503 服务不可用

我在 Apache 代理后面有一个 erpnext 服务器。经常发生服务失败并显示 503 服务不可用错误的情况

Service Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

Apache/2.4.41 (Ubuntu) 服务器位于 erp.example.it 端口 443

我确信 erpnext 服务器正在运行,因为我可以通过 ip 访问网页。我知道这个错误是由 apache 给出的,当它没有收到来自后端服务器的响应时,它会阻止连接几秒钟。我尝试在 apache 主机配置中设置此值 (retry=0),但似乎不起作用。

一段时间后或 apache 机器重新启动几次后,服务器会自行恢复(仅对 apache2 服务进行操作似乎不起作用)。

问题仅出现在这个 apache 虚拟主机上,因为代理提供了多个网站,其他网站都可以正常工作。

<VirtualHost *:80>
    ServerName erp.example.it

    <IfModule mod_proxy.c>
        ProxyPreserveHost On
        ProxyPass / http://10.2.2.3/ retry=0
        ProxyPassReverse / http://10.2.2.3/
    </IfModule>
    ErrorLog ${APACHE_LOG_DIR}/error-erp.example.it.log
    CustomLog ${APACHE_LOG_DIR}/access-erp.example.it.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =erp.example.it
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<VirtualHost *:443>
    ServerName erp.example.it

    <IfModule mod_proxy.c>
        ProxyPreserveHost On
        ProxyPass / http://10.2.2.3/ retry=0
        ProxyPassReverse / http://10.2.2.3/
    </IfModule>
    ErrorLog ${APACHE_LOG_DIR}/error-erp.example.it.log
    CustomLog ${APACHE_LOG_DIR}/access-erp.example.it.log combined
SSLCertificateFile /etc/letsencrypt/live/erp.example.it/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/erp.example.it/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

Apache 日志告诉我这个

[Wed May 19 10: 22: 29.684524 2021] [proxy_http: error] [pid 2974: tid 139955418404608] [client 10.2.1.1:49257] AH01114: HTTP: failed to make connection to backend: 10.2.2.3, referer: https: //erp.example.it/

如果有人能提供帮助,我随时可以提供更多信息,提前致谢

答案1

我遇到了类似的问题 - 最初没有任何问题迹象,然后开始无缘无故地收到“服务不可用”通知和 503 错误 - 对于在 Apache 反向代理后面运行的 ERPNext 网站。这可能与在 ERPNext 中设置电子邮件组件有关。

Apache 系统的日志包含如下条目:

... "GET / HTTP/1.1" 503 299 ... 
... "POST /socket.io/?EIO=3&transport=polling&t=...&sid=... HTTP/1.1" 503 299 ...
... "GET /socket.io/?EIO=3&transport=polling&t=... HTTP/1.1" 503 299 ...

ERPNext 系统的 /var/log/fail2ban.log 有如下条目:

2021-09-21 17:50:18,889 fail2ban.actions [428]: NOTICE  [nginx-proxy] Ban  xxx.xxx.xxx.xxx
2021-09-21 18:00:19,383 fail2ban.actions [428]: NOTICE  [nginx-proxy] Unban xxx.xxx.xxx.xxx

因此,10 分钟后,它会重新开始工作一小段时间(可能 4-5 分钟),然后再次出现故障。

触发 fail2ban 的原因尚未确定,但在此特定设置中不需要 fail2ban,因此它被禁用,从而解决了问题。很可能您已经解决了您的案例,但对于像这样的问题,fail2ban 似乎是开始调查的好地方。

相关内容