我们在两个几乎相同的 VirtualBox VM 上部署了一个 ASP.NET 4 网站,这些 VM 都安装了 IIS 7.5。它们都托管在同一个 Ubuntu 系统上,使用 Apache 2.2.14。
Apache 根据主机名(live.domain.com 或 staging.domain.com)决定将查询发送到哪个 VM。它有两个 VirtualHost,配置了 ProxyPass/ProxyPassReverse,并通过其 IP 选择 VM(VM 通过 VirtualBox 的“仅主机”虚拟网络适配器连接到主机)。
此设置工作正常,但有些请求无法完成。浏览器尝试下载文件(例如静态 JS 文件)5 分钟,然后 Apache 返回502 代理错误结果。Apache 日志显示 IIS 没有及时响应。在 IIS 日志中甚至没有出现该请求。
有什么提示可以找到这些偶发错误吗?Apache?VirtualBox 虚拟网络适配器?IIS?
Apache VirtualHost 配置摘录:
ServerName staging.domain.com
ProxyRequests off
ProxyPreserveHost On
<Proxy *>
allow from all
</Proxy>
ProxyPass / http://192.168.56.103/
ProxyPassReverse / http://192.168.56.103/
答案1
我们在通过 Apache 代理到 IIS 时使用它:
<Location />
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
</Location>