IIS和Apache2之间的502代理错误

use*_*361 6 apache iis proxy mod-proxy

我目前正在运行apache2一个SUSE实例@EC2.由于我的网站的一部分,我的数据使用mod_proxy打一个REST服务器上运行IIS通过Proxy/ReverseProxy.

在设置我的vhosts,启用mod_proxy并建立我的配置后,我发现我经常遇到502错误.这些错误是的Proxy ErrorBad Gateway风味.在做了一些相当可观的谷歌后,我发现方式有所不同IISapache终止了他们的连接,这导致了错误.设置以下环境变量后,性能显着提高:

SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1 SetEnv
proxy-initial-not-pooled 1

我想知道为什么这是有效的,理想的配置是什么样的.

我的理解是,使用Env变量:
我强制一个HTTP 1.0 request(这将标准化终止预期)
不保持任何连接
不使用任何池化连接
正确吗?

如果我需要使用池化连接怎么办?如果我想使用keep-alives怎么办?简而言之,我正在寻找最佳实践来取代我目前正在使用的牙签和胶水解决方案

Rob*_*ger 2

我发现这个问题已经存在了一段时间,所以我想我应该投入 2 美分。无论如何,我的经验更多......

据我所知,这三个环境变量或设置在生产中是可以的。您对它们的理解也是正确的。当我很久以前遇到这个问题时,我发现这个链接对于解释问题很有用。它只发生在后端的 IIS 中......请注意,初始池化设置会影响性能,特别是在 Http/1.0 客户端中......我从来没有注意到任何事情,但是,iis 服务器本身就有 64GB 的 ram 和几个核心在机器上......所以我承认我不能确定“它根本不会影响”,我所知道的是“只要有足够的资源,就不会有问题”......

说实话,但是,关于你的牙签声明,我知道有几十个实现这个的生产环境...你可以设置其他东西并使用 apache 并更改它以实现更长的超时等,但我已经设置了这些设置并且它只是有效...

我想我只是想说你不应该因为这些设置而失去睡眠。在我看来,虽然我不知道它们是否是最佳实践,但它们是安全的......

抱歉我帮不了更多...

罗宾干杯