Svn 使用nginx代理多个Subversion repo

Svn 使用nginx代理多个Subversion repo,svn,configuration,nginx,reverse-proxy,Svn,Configuration,Nginx,Reverse Proxy,我目前有一台老化的subversion 1.4.2服务器,有多个repo,我想升级。我想做几件事: 移动到更新版本(1.7+)的subversion 将存储库拆分为不同的计算机 更改主机名(我马上解释) 更改为在URL上使用FQDN而不是路径(我可能正确理解您的上下文。我相信您知道这一点,但SVN也在不同的端口上运行,因此您可能会遇到问题:) 关于nginx中的location参数,您必须记住,它只是为您在配置中设置的服务器名称定义位置。因此,对于上面定义为data.svn.company.c

我目前有一台老化的subversion 1.4.2服务器,有多个repo,我想升级。我想做几件事:

  • 移动到更新版本(1.7+)的subversion
  • 将存储库拆分为不同的计算机
  • 更改主机名(我马上解释)

  • 更改为在URL上使用FQDN而不是路径(我可能正确理解您的上下文。我相信您知道这一点,但SVN也在不同的端口上运行,因此您可能会遇到问题:)

    关于nginx中的
    location
    参数,您必须记住,它只是为您在配置中设置的服务器名称定义位置。因此,对于上面定义为
    data.svn.company.com
    的唯一服务器名称,您正在为该子域定义每个位置。我认为您实际上是在尝试定义多个子域

    因此,如果是这种情况,您必须设置多个服务器名称,例如
    main.svn.company.com
    data.svn.company.com
    ,而不是定义位置URI


    希望有帮助:)

    因此,我最终通过编辑端点服务器(即我要离开的服务器)在两个不同的位置拥有相同的存储库:

    <VirtualHost 10.11.22.33>
      Servername svn.svr.mycompany.co.uk
    
      <Location /data>
        DAV svn
        SVNPath /home/svnrepo/data
        [... Some regular auth stuff ...]
      </Location>
    </VirtualHost>
    
    <VirtualHost 10.11.22.33>
      Servername data.svn.svr.mycompany.co.uk
    
      <Location />
        DAV svn
        SVNPath /home/svnrepo/data
        [... Some regular auth stuff ...]
      </Location>
    </VirtualHost>
    
    第一个服务器将路由到代理服务器,代理服务器将路由到第二个服务器。第二个和第三个(如果直接连接到)将直接路由到旧服务器

    作为参考,我的nginx代理条目现在如下所示:

    server {
      listen 80;
      listen 443 ssl;
    
      server_name data.svn.mycompanyglobal.net;
    
      proxy_set_header     Host data.svn.svr.mycompany.co.uk;
    
      location / {
        proxy_pass http://data.svn.svr.mycompany.co.uk/;
      }
    }
    

    每个回购协议都会有一个(在我上面的例子中是“数据”和“主数据”)

    谢谢!事实上,我已经想出了办法——我已经用我的解决方案回应了。酷,没问题。如果答案是一个可能的解决方案,请通过“检查”让我知道,这样我就知道我的魔咒仍然有效;)
    Unusable URI: it does not refer to this repository
    
    http://data.svn.mycompanyglobal.net/data
    
    <VirtualHost 10.11.22.33>
      Servername svn.svr.mycompany.co.uk
    
      <Location /data>
        DAV svn
        SVNPath /home/svnrepo/data
        [... Some regular auth stuff ...]
      </Location>
    </VirtualHost>
    
    <VirtualHost 10.11.22.33>
      Servername data.svn.svr.mycompany.co.uk
    
      <Location />
        DAV svn
        SVNPath /home/svnrepo/data
        [... Some regular auth stuff ...]
      </Location>
    </VirtualHost>
    
    http://data.svn.mycompanyglobal.net/
    http://data.svn.svr.mycompany.co.uk/
    http://svn.svr.mycompany.co.uk/data
    
    server {
      listen 80;
      listen 443 ssl;
    
      server_name data.svn.mycompanyglobal.net;
    
      proxy_set_header     Host data.svn.svr.mycompany.co.uk;
    
      location / {
        proxy_pass http://data.svn.svr.mycompany.co.uk/;
      }
    }