我已经启用了 Apache 代理和 http_proxy 模块,以便将一些来自端口 80 的请求(仅适用于虚拟主机)反向代理到 localhost:3000(其中运行着带有节点的 nuxt)。
虚拟主机中的代理配置非常简单:
ProxyRequests off
<Proxy *>
Require all granted
</Proxy>
ProxyPreserveHost on
ProxyPass / http://localhost:3000/ retry=1 acquire=3000 timeout=3000 keepalive=off
ProxyPassReverse / http://localhost:3000/
ProxyTimeout 3000
ProxyVia full
Apache 版本为:Apache/2.4.18 (Ubuntu)
问题在 apache 错误日志中,该日志中间歇性地重复出现这两个错误:
[proxy_http:error] [pid :pid] (20014)Internal error (specific information not available): [client xxx.xxx.xxx.xxx:xxxxx] AH01102: error reading status line from remote server localhost:3000
[proxy:error] [pid :pid] [client xxx.xxx.xxx.xxx:xxxxx] AH00898: Error reading from remote server returned by /
我遵循了许多指南和建议(SetEnv proxy-initial-not-pooled 1、keepalive off 等等),但都无济于事。有人知道这件事吗?也许这甚至不是一个错误,一定是因为 ProxyRequests 已关闭?但是我不能让日志仅因这两个错误而泛滥。
答案1
[proxy:error] [pid :pid] [client xxx.xxx.xxx.xxx:xxxxx] AH00898: Error reading from remote server returned by /
这意味着 Apache 无法读取来自 后面服务的响应ProxyPass
。也许端口 3000 上的服务确实在提供其内容时存在问题。尝试在那里寻找问题,尝试直接访问端口。
答案2
""
您是否尝试过在斜线()周围添加开始和结束引号(/
)?
方法:
ProxyPass "/" "http://localhost:3000/" retry=1 acquire=3000 timeout=3000 keepalive=off
ProxyPassReverse "/" "http://localhost:3000/"
或许这会造成麻烦。