7

我有 2 台服务器。一个在网络上的反向代理和一个在服务 WebDAV 的私有链接上。

展位服务器是 apache httpd v2。

在代理上我有:

    代理请求关闭

    <代理 *>
        订单拒绝,允许
        允许所有人
    </代理>

    ProxyPass /repo/ http : //share.local/repo/
    ProxyPassReverse /repo/ http : //share.local/repo/

在 dav 服务器上,我有:

<位置/repo/>
    DAV 开启
    命令允许,拒绝
    允许所有人
</位置>

反向代理通过 访问https,私有服务器通过 访问http。这就是问题所在!

只读命令工作正常。但是当我想移动我得到的东西时502 Bad gateway。原因是反向代理没有重写扩展 dav 请求中的 url。

源 URL 位于标头内,并正确转换为http://share.local/file1. 目标 URL 在我不理解的一些 xml 片段中并保留https://example.com/file1:(

有没有一种标准方法可以让 apache 正确转换请求?

谢谢你的努力。

4

2 回答 2

10

嗯,找到答案了。总是一样 :)

我将下一行添加到我的“私有服务器”配置文件中:

LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so

RequestHeader 编辑 Destination ^https http 早

(例如配置位置'/etc/httpd/conf.d/DefaultRequestHeader.conf')

它奏效了。我不知道这是否有缺点。我会明白的。

于 2009-07-10T17:08:55.090 回答
2

正如您已经注意到的,目标 URL 不应该是 XML,而是在“Destination”标头中。也许您正在查看错误响应...

通常,当客户端和服务器实现 WebDAV 级别 3(如 RFC4918 中定义)时,此问题就会消失,这允许 Destination 标头只是一个相对路径。

于 2009-07-13T12:59:58.760 回答