Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于来自同一Web服务器的URL的Apache重定向_Apache_Api_Redirect_Zabbix - Fatal编程技术网

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

基于来自同一Web服务器的URL的Apache重定向,apache,api,redirect,zabbix,Apache,Api,Redirect,Zabbix,我们需要为我们的Zabbix监控前端实现SSL,这在我们的一些后端脚本上造成了havok,这将是比修复它更麻烦的问题 我目前的工作原理是,我应该能够使用一些重定向魔法,以便: 通过HTTPS访问我们的普通Zabbix前端 通过HTTP访问我们的API这是目前的关键问题。 最初-重定向非常简单: <VirtualHost *:80> ServerName <servername> RedirectMatch /zabbix/(.*) https://<serverna

我们需要为我们的Zabbix监控前端实现SSL,这在我们的一些后端脚本上造成了havok,这将是比修复它更麻烦的问题

我目前的工作原理是,我应该能够使用一些重定向魔法,以便:

通过HTTPS访问我们的普通Zabbix前端 通过HTTP访问我们的API这是目前的关键问题。 最初-重定向非常简单:

<VirtualHost *:80>
ServerName <servername>
RedirectMatch /zabbix/(.*) https://<servername>/zabbix/$1
</VirtualHost>
但是这导致了我们的API调用仍然需要通过HTTP来完成的各种问题,HTTP是通过调用API值的脚本来驱动其他工具中的接口选择来完成的。我最终得到了412的回复

所以我想我可以这样做:

RedirectMatch /zabbix/(!api_jsonrpc.php)(.*) https://<servername>/zabbix/$2
虽然这仍然可以让我的API通过HTTP成功,但它不会将我的zabbix前端重定向到HTTPS

这让我快发疯了!任何帮助都将不胜感激

示例URL:

https://<servername>/zabbix/zabbix.php?action=dashboard.view
https://<servername>/zabbix/index.php
http://<servername>/zabbix/api_jsonrpc.php
最终-任何不是api_jsonrpc.php的东西都需要重定向到HTTPS,任何具有该值的东西都需要通过HTTP


我们正在使用Apache 2.2,升级目前不是一个选项。

您不能仅通过在字符串前面加一个感叹号来否定字符串,必须使用lookarounds

我认为API请求不会传递任何GET参数-请尝试以下操作:

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

最终,我遇到的问题是,你不能真的重定向帖子


为了解决这个问题,我最终赢得了我的论点,即库文件更新通过HTTPS强制所有流量和大规模推送是唯一可行的解决方案,我们现在是黄金解决方案。

我只是好奇:为什么要牺牲HTTPS来换取API?那是什么问题?跨站点请求、自签名证书、自定义CA…这是通过我们的内部CA进行的自签名证书。它更像是跨脚本处理,可以处理我们的许多自动化操作。为此,我将不得不在将来使用该配置。哦,该死,我完全忽略了一个事实,即POST重定向不存在,保存为HTTP代码307。这使得我的答案不正确,但我将保留它,以防它在不同的场景中有用。上周我推送了我们的库更新,并强制重定向了我们的整个服务器,但最终这在我们的系统中指出了另一个漏洞,需要将证书添加到java应用程序Rundeck中——这引发了我对重定向的另一次尝试。通过一个我们仍然不理解的魔术动作,你的重定向正则表达式工作得很有魅力!我无法将所有监控前端重定向到SSL,我们的后端功能仍将在端口80上运行。超级怪异,但很实用。