我在 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 似乎是开始调查的好地方。