Apache重定向基于来自同一Web服务器的URL

时间:2018-02-06 22:43:34

标签: apache api redirect zabbix

我们需要为我们的Zabbix监控前端实施SSL,这对我们的一些后端脚本造成了破坏(这比修复它更麻烦)。

我目前的工作理论是我应该可以使用一些重定向魔法来:

  • 通过HTTPS访问我们正常的Zabbix前端
  • 通过HTTP访问我们的API(这是目前关键的挂断)。

最初 - 重定向很容易:

<%= render 'comment_image_fields', parent_form: comment_form %>

但这导致我们的API调用的各种问题仍然需要通过HTTP完成(这是通过调用API值的脚本来完成,以驱动其他工具中的接口选择)。我实际上最终得到了412响应。

所以我想我可以做这样的事情:

<VirtualHost *:80>
ServerName <servername>
RedirectMatch /zabbix/(.*) https://<servername>/zabbix/$1
</VirtualHost>

虽然这仍然可以让我的API通过HTTP成功,但它并没有将我的zabbix前端重定向到HTTPS。

这让我疯了!任何帮助,将不胜感激。

示例网址:

RedirectMatch /zabbix/(!api_jsonrpc.php)(.*) https://<servername>/zabbix/$2

最终 - 任何不是&#34; api_jsonrpc.php&#34;需要重定向到HTTPS,具有该值的任何内容都需要通过HTTP。

我们正在使用Apache 2.2,目前还不能升级。

2 个答案:

答案 0 :(得分:1)

最终,我遇到的问题归结为你无法真正重定向POST。

为了解决这个问题,我最终赢得了我的论点,即他的库文件更新(通过HTTPS强制所有流量)和群发推送是唯一可行的解​​决方案,我们现在已经很好了。

答案 1 :(得分:0)

你不能仅仅通过给它们添加感叹号来否定字符串,就必须使用外观。

我认为API请求不会传递任何RedirectMatch /zabbix/(.*)(?<!api_jsonrpc\.php)$ https://<servername>/zabbix/$1 参数 - 请尝试以下操作:

interface ExtFunctionInterface {
    (arg1: string, arg2: number): boolean
}