Ari*_*ion 6 apache2 gitlab gitlab-api gitlab-ce
我尝试使用 VS Code 的 Gitlab 工作流插件。不幸的是它没有找到我的项目。我调试了一下,发现它调用了
https://mydomain/gitlab/api/v4/projects/mygroup%2Fmyproject
并且 api 返回
{
error: "404 Project Not Found"
}
Run Code Online (Sandbox Code Playgroud)
根据文档,这应该有效。
如果我打电话https://mydomain/gitlab/api/v4/projects/:id
,其中 id 是我得到的项目编号
path_with_namespace: "mygroup/myproject",
Run Code Online (Sandbox Code Playgroud)
浏览互联网,我发现有些人声称这对他们也不起作用,但没有解决方案。其他人则说这对他们来说非常有效。
我尝试过使用 Gitlab CE 12.xx,现在使用https://github.com/sameersbn/docker-gitlab升级到最新版本 13 (13.0.6)
我尝试过几个项目但没有成功。
我是项目的维护者。
访问令牌具有插件请求的权限 api 和 read_user 。
显然我错过了一些东西。但什么?
编辑:
我的设置是将 docker 容器置于反向代理 apache 后面。也许授权没有按预期工作。该插件发送一个标头PRIVATE-TOKEN
。我将检查标头是否已传递到 api。
没有。PRIVATE-TOKEN 标头由 docker 容器接收。
编辑2:
我建立了一个公共小组和一个公共项目来消除身份验证问题。还是不行。搜索返回 404。
编辑3:
由于 Dashrath Mundkar 询问了 curl 命令:
curl -H "PRIVATE-TOKEN:XXXXXXX" https://mydomain/gitlab/api/v4/projects/mygroup%2Fmyproject
Run Code Online (Sandbox Code Playgroud)
好的。我找到了答案,它与我的设置有些特定。
由于它可能与其他在 Gitlab 上使用 Apache 2.4 作为反向代理的人非常相关,所以我回答我自己的问题。
我的 Apache 配置包含AllowEncodedSlashes NoDecode
这样的内容,以便对 Gitlab 的请求可以包含 Api 所需的 urlencoded 路径,例如mygroup%2Fmyproject
(否则 Apache 已经抛出 404,请参阅AllowEncodedSlashes)
不幸的是这还不够。通常,mod_proxy 也会规范 ProxyPassed URL。
所以我的后端收到了mygroup%252Fmyproject
(注意添加的 25,编码 %2F 中的 % 字符),这导致了来自 Gitlab 的 404。
在我将 Apache 配置更改为ProxyPass /gitlab http://gitlab.local:80/gitlab nocanon
(我添加了 nocanon)后,一切正常。
归档时间: |
|
查看次数: |
8280 次 |
最近记录: |