Nginx反向代理后面的Apache+SVN服务器的身份验证

Nginx反向代理后面的Apache+SVN服务器的身份验证

我有一个在 nginx 反向代理后面运行的 Apache2/svn 服务器。基本身份验证由 nginx 完成,因此反向代理后面的 Apache2 服务器基本上不必执行任何身份验证工作。

我在 svn mod_authz_svn 的授权配置中有一个用户条目:

[/]
* = r
test = rw

用户测试可以结帐但不能提交。

我不知道如何将经过身份验证的用户从 nginx 提供给托管 svn 安装的 apache2 服务器。

我尝试过的:

在 nginx 反向代理中设置 Remote-User HTTP 标头

proxy_set_header REMOTE_USER $remote_user;

转发授权标头

proxy_set_header Authorization $http_authorization;
proxy_pass_header  Authorization;

答案1

我有同样的问题,并且通过使用 apache mod_authn_anon 模块解决了它。

Apache 配置:

LoadModule authn_anon_module /usr/lib/apache2/mod_authn_anon.so
LoadModule dav_svn_module /usr/lib/apache2/mod_dav_svn.so
LoadModule authz_svn_module /usr/lib/apache2/mod_authz_svn.so

<Location /some/path/svn>
        DAV svn
        SVNPath /svn
        SVNReposName /some/path/svn

        # Authentication is performed by the reverse proxy, the username is
        # forwarded/set in the Remote-User header by the proxy.
        # Use anon authentication module, allowing anybody to access this path,
        # but registering the user in svn.
        AuthType Basic
        AuthName SVN
        AuthBasicProvider anon
        Anonymous "*"
        Require valid-user
</Location>

Nginx 配置:

 location /some/path/svn {
    proxy_set_header Host $host;
    proxy_pass http://svn/some/path/svn;
    proxy_set_header Remote-User $remote_user;
}

相关内容