我是一个基于IIS的旧网站,由于历史原因,它通过Helicon APE使用了大量的RewriteRule。现在,当我们使用多个客户端访问服务器时,Helicon APE经常崩溃(实际上非常频繁)。预计整套IIS服务器(4)将不断增长,整个系统将进行扩展,最近在webapp中进行了大量工作,以支持新功能和用户增长。
有人建议在IIS服务器之前使用NGINX作为负载均衡器,因为它会更好地处理越来越多的流量,并在命中IIS之前应用这些重写,因此在负载平衡之前URL将转换为新格式它们。
根据建议,我们在linux上设置了一个POC nginx 1.13,其中包含重写规则(来自APE中使用的重写规则),并使用了proxy_pass和两个服务器。但我们已经注意到了几个问题:
重写规则似乎不按照应有的方式工作;我们可以检查正则表达式是否确实有效(将它们放在位置),但URL似乎没有被重写。
ProxyPass通常会返回400个错误请求或者没有命中服务器。
但是,如果我们使用一些更简单的正则表达式设置多个位置,然后我们将ProxyPass放入后端服务器和新的URL模式,那么服务器就会被正确的请求命中。然而,这个解决方案带来了一些问题:我们的一些重写是对其他人的补充,所以转换可以分三步完成(一个改变规则的第一部分,第二部分改变另一部分,第三部分将全部加在一起)带有break标志的有效url)。这是不可能混合位置。
通过StackOverflow,博客,支持网站和邮件列表进行了大量研究,以找到解决问题的方法,但有时建议的解决方案根本不起作用(或部分起作用),说实话,在这一周之后,我们担心我们想到的建设是不可能完成的。
我们也尝试使用haproxy,haproxy真的很奇怪(即:发送附加到请求的错误消息是LB' d)。
正如标题总结的那样,在上面的长篇描述之后,问题是:有人确认我们想要实现的目标是否真的能用nginx完成?如果没有,可以使用什么?