Apache mod_rewrite 内部服务器问题

Apache mod_rewrite 内部服务器问题

我在使用 apache 和 mod_rewrite 时遇到了一些问题。我运行的服务器在 centos 上使用 apache。同一台服务器正在将 Windows 作为虚拟机运行。

我当前的设置允许我访问:

http://example.com在 centos 服务器上

http://example.com/windows在虚拟机上使用以下配置:

RewriteEngine On
RewriteRule ^/windows(.*)$ http://192.168.56.2$1 [P]

然而,当访问http://example.com/windows所有请求都被重写为 GET 请求,因此任何 POST 数据都会丢失。

有什么方法可以让我保留我的 POST 数据吗?

非常感谢您的帮助!谢谢。

答案1

302 是什么样子的?这里有几个选项:它可能是 Apache,或者是被代理的服务器,或者是在后端服务器上处理请求的应用程序的预期行为。

选项 A

如果需要,Apache 将发送 302 来添加尾随斜杠,但由于此资源与代理规则匹配,因此它不必在意。

选项 B

如果请求只是http://example.com/windows,那么请求就会被发送到后端http://192.168.56.2- 这需要在 IP 后有一个斜杠才能成为有效请求,因此不能指责任何 Web 服务器返回 302 来添加一个。

选项 C

请记住,重定向并不一定表示请求失败POST- 有些应用程序设计为这样做,以防止用户意外重复发布。请参阅此处详细信息


深入挖掘日志并查看它是哪一个。

哦,你的配置很容易受到CVE-2011-3368-例如,对 的请求将发送到- 192.168.56.2 最终被视为用户规范,192.168.56.100 被视为主机,攻击者可以访问您的代理可以看到任何内部主机。http://example.com/[email protected]/index.htmlhttp://[email protected]/index.html

尝试此配置 - 如果上面的选项 B 是问题所在,这应该既可以修复尾随斜杠问题,又可以解决您暴露于漏洞的问题:

RewriteRule ^/windows/?(.*?)$ http://192.168.56.2/$1 [P]

相关内容