几天前我设置了一个 ELK 7 堆栈来在一个地方监控一些日志。现在它可以完美运行并且在网络内部运行良好。我现在想在不需要 VPN 的情况下从网络外部访问 Kibana。
我已经有一个在 IIS 中运行的网站,该网站通过全局反向代理提供服务。网站本身什么都不做,但它下面有 2 个 WebApplications(网站根目录下只有一个小应用程序根据请求的来源重定向到正确的应用程序)。
所以目前,我有以下可用的 URL(服务器名可以是我在 Intranet 上的机器名称,也可以是我远程处理时的外部域):
现在我希望能够通过以下 URL 访问 Kibana
目前我没有设法让它工作 - 即使是在内部 - (所以没有涉及第一个全局反向代理)。
我在专用于测试目的的网站下设置了一个应用程序(因此它不会与真实网站混淆)。这是此应用程序的 web.config 文件的摘录:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="KibanaProxy">
<match url="(.*)" />
<action type="Rewrite" url="http://kibanahost:5601/{R:1}" />
</rule>
</rules>
<outboundRules>
<rule name="KibanaRedirect" preCondition="Redirect">
<match serverVariable="RESPONSE_Location" pattern="^/(.*)" />
<action type="Rewrite" value="/elk/{R:1}" />
</rule>
<rule name="KibanaContent" preCondition="ResponseIsHtml1">
<match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Input, Link, Script" pattern="^/(.*)" />
<action type="Rewrite" value="/elk/{R:1}" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
我编写了一个规则来处理访问 Kibana 根目录时完成的第一次重定向,并且我尝试添加一个重写规则,以便也可以访问外部资源。似乎我还有一些其他的重写工作要做,主要是因为 bootstrap.js 中的 URL 和 CSS 之类的东西......实现起来似乎很痛苦,我想知道是否有人设法完成了这样的代理。如果我可以在内部正确代理 Kibana,那么在尝试通过全局反向代理在 Internet 上公开它之前,我将能够通过 IIS 添加一个身份验证层。