我目前正在apache2
实例SUSE
上运行@EC2
。作为我网站的一部分,我的数据使用mod_proxy
来REST
通过IIS
点击运行Proxy/ReverseProxy
的{{1}}服务器。
设置vhosts
,启用mod_proxy
并建立我的配置后,我发现我经常遇到502
错误。这些错误属于Proxy Error
和Bad Gateway
风格。在做了一些相当可观的谷歌后,我发现IIS
和apache
终止其连接的方式存在差异,这导致了错误。设置以下环境变量后,性能显着提高:
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
SetEnv proxy-initial-not-pooled 1
我想知道的是为什么这会起作用,理想的配置会是什么样子。
我的理解是,用Env变量:
我强迫HTTP 1.0 request
(这会使终止期望标准化)
不保持任何联系
不使用任何池连接
正确?
如果我需要使用池化连接怎么办?如果我想使用keep-alives怎么办?简而言之,我正在寻找最佳实践来替换我目前使用的牙签和胶水解决方案
答案 0 :(得分:2)
我看到这个问题已经存在了一段时间,所以我想我会投入2美分。无论如何我的经验更多......
据我所知,这三个env变量或设置在生产中都可以。您对它们的理解也是正确的。当我遇到这个问题时,我发现this链接在问题的解释中是有用的。它只发生在后端的IIS .... 请注意,初始池设置会影响Http / 1.0客户端的性能......我从来没有注意到任何东西,但是,单独的iis服务器有64GB的ram和机器上的几个核心...所以我承认我可以'确保“它根本没有影响”,我所知道的是“有足够的资源,你没有问题”......
老实说,但是,你的牙签声明,我知道实现这个的几十个生产环境......你可以设置其他东西并玩弄apache并改变它以实现更长的超时等,但我已经设置了这些设置,它只是工作...
我想我只是想说你不应该在这些设置上失眠。在我看来,虽然我不知道它们是否是最佳实践,但它们是安全的......
抱歉,我帮不了多忙......
干杯 罗宾
答案 1 :(得分:0)
我认为我收到此错误是因为服务器耗尽了硬盘空间。不寻常,但它发生了。