我在反向代理服务器后面使用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工作是否可以配置为在反向代理后正常工作?应该如何配置?
答案 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标头来解决此问题:
RequestHeader edit Destination ^https http early
set $dest $http_destination;
if ($http_destination ~ "^https://(.+)$") {
set $dest http://$1;
}
proxy_set_header Destination $dest;