我有一个工作的 gerrit 安装,唯一的事情是,gerrit 配置了 HTTP 身份验证后端,并且 nginx 处理身份验证。
现在,我想使用 gerrit restapi(只是通过 curl 将 Verified 标签设置为特定用户)。为此,我需要在设置面板中使用 gerrit 生成的 http 密码。所以你可以看到问题。有两个不同的密码。首先我尝试为两者设置相同的密码,(nginx密码在我的控制范围内,gerrit不是)然后我更改尝试为/a/创建一个新位置(用于身份验证的gerrit前缀)并删除该路由上的nginx密码,还没有运气。最终的 nginx 配置是:
location /a/ {
proxy_pass http://127.0.0.1:8118;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
auth_basic "Gerrit";
proxy_set_header Authorization $http_authorization;
proxy_pass_header Authorization;
}
location / {
proxy_pass http://127.0.0.1:8118;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
auth_basic "Gerrit";
auth_basic_user_file /etc/nginx/conf.d/gerrit.htpasswd;
proxy_set_header Authorization $http_authorization;
proxy_pass_header Authorization;
}
我的 gerrit 配置是:
[gerrit]
basePath = git
canonicalWebUrl = http://gerrit.example.com/
[database]
type = postgresql
hostname = 127.0.0.1
database = reviewdb
username = gerrit2
[index]
type = LUCENE
[auth]
type = HTTP
[sendemail]
smtpServer = mail.vada.ir
from = ${user} Code Review <[email protected]>
smtpUser = [email protected]
smtpPass = T7SMkUYRqMP
[container]
user = gerrit2
javaHome = /usr/lib/jvm/java-7-openjdk-amd64/jre
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = proxy-http://127.0.0.1:8118/
[cache]
directory = cache
[plugins]
allowRemoteAdmin = true
如果我们可以保护它免于注册,则更改 gerrit 身份验证只是一种选择。
谢谢你。
我发现正常(基本身份验证)在我的设置中无法使用 api。但是使用数字身份验证没有问题。