2

这更多的是与 Apache 如何处理变量和 SetEnvIf 指令有关的问题。我有一个位于http://test.net/svn的 Subversion 服务器,SVN 配置如下:

<Location /svn>
    DAV svn
    SVNParentPath /path/to/repo/base
    AuthzSVNAccessFile /path/to/access
    AuthName "LDAP Auth"
    AuthBasicProvider ldap
    AuthType Basic
    AuthzLDAPAuthoritative off
    AuthLDAPURL "ldap://172.20.20.20:389/dc=test,dc=net?uid" NONE
    AuthLDAPBindDN "cn=svn,ou=system,dc=test,dc=net"
    AuthLDAPBindPassword secret
    Require valid-user
</Location>

在“/path/to/repo/base”中,我有大约 80 个存储库,每个存储库都可以通过http://test.net/svn/repo-name访问。这一 Apache 配置使用“/path/to/access 文件”处理所有存储库的身份验证。

将来,我将使用 LDAP 组进行授权。但是,我不想为每个存储库创建单独的 Apache 配置。基本上,我想使用请求 URI 为存储库名称设置一个变量。例如,我访问http://test.net/svn/repo-name/path/to/file.txt并且 Apache 知道“repo-name”是变量。

像这样的东西(语法不正确,只是伪代码):

SetEnvIf Request_URI "http://test.net/svn/$1/.*" repo-name=$1
...
...
Require ldap-group cn=$repo-name,ou=system,dc=test,dc=net
4

0 回答 0