我有 Apache 反向代理服务器,它将请求代理到我的内部 Apache 服务器。我在 Linux 平台上使用 Apache 版本 2.4。
每当后端 Apache 服务器花费超过 60 秒的时间时,我都会遇到超时页面和 HTTP 错误 504(PHP 页面等待后端 Apache 服务器上的 Mysql 查询结果)
Apache 默认超时设置为 300 秒。
仅当通过 Apache 反向代理访问网站时才会出现此问题。使用内部 IP 可以正常工作。
我尝试将以下参数设置为 proxypass,但没有成功。
ProxyPass / http://internal-ip:8080/ retry=1 acquire=3000 timeout=600 Keepalive=On
我也尝试过在不存在的 IP 上使用 ProxyPass,60 秒后也显示 504 HTTP 错误
请帮助我理解这个问题。
<VirtualHost *:80>
ServerName mywebsite.example.com
ServerAlias www.mywebsite.example.com
ProxyPreserveHost On
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/mywebsite.example.com-error.log
CustomLog ${APACHE_LOG_DIR}/mywebsite.example.com-access.log combined
RewriteCond %{REQUEST_METHOD} !^(GET|POST)$
RewriteRule .* - [R=405,L]
ProxyPass /.static-pages !
ProxyPass / http://<Internal Apache Server IP>/
ProxyPassReverse / http://<Internal Apache Server IP>/
</VirtualHost>
答案1
有了ProxyPass
指令,您就可以考虑connectiontimeout
参数。
参考 Apache httpd mod_proxy 文档:https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#workers
connectiontimeout
参数设置 Apache httpd 等待与后端的连接创建完成的秒数。
参数默认值为60 年代...