反向代理服务器后面的Subversion Edge返回HTTP状态502' Bad Gateway'

时间:2017-12-04 10:01:36

标签: svn reverse-proxy subversion-edge

我在反向代理服务器后面使用Subversion Edge 5.2.2。所有服务ViewVC,控制台和Subversion服务器乍一看都很好/正常工作。

然而,Subversion服务器不适用于特定的Subversion命令,例如svn cp返回

  

svn:E175002:意外的HTTP状态502' Bad Gateway'上   '!/ SVN /的PetClinic / SVN / RVR / 16 /主干'

如果我绕过反向代理并直接访问Subversion Edge,那么这些命令就可以正常工作。

Subversion Edge文档没有关于反向代理配置的任何信息,所以它似乎是"企业"产品不支持这种典型的企业"部署模式。

Subversion Edge工作是否可以配置为在反向代理后正常工作?应该如何配置?

1 个答案:

答案 0 :(得分:0)

之所以会发生此错误,是因为nginx将Destination头传递给了Subversion服务器而没有修改。如果您在Nginx服务器上使用 https ,而在Subversion服务器上仅使用 http ,则Subversion将无法执行COPY或MOVE方法,因为Destination标头包含一个https://值。

您可以通过检查nginx的access.log来确认。如果您看到带有502响应的COPY或MOVE请求,然后是DELETE,则可能是此问题,例如:

… COPY /foo/!svn/rvr/111/trunk HTTP/1.1" 502 …
… DELETE /foo/!svn/txn/111-6v HTTP/1.1" 204 …

您可以通过重写任一服务器上的Destination标头来解决此问题:

Subversion服务器上的Apache

RequestHeader edit Destination ^https http early

nginx代理服务器:

set $dest $http_destination;
if ($http_destination ~ "^https://(.+)$") {
    set $dest http://$1;
}
proxy_set_header Destination $dest;