我在 docker 上使用 gitlab-ce。这些是我的系统规格。
- GitLab 的一个容器是 gitlab/gitlab-ce。
- Web 前端正在使用外部 NGINX。
- GitLab 安装在/git 下。
我读了gitlab 文档中关于配置相对 URL 的内容,但它没有按预期工作。我的预期行为是我http:localhost/git/
以 GitLab 的根身份访问。但 NGINX 或 GiLab 重定向/user/_login
而不是/git/user/_login
。
我的所有配置都可以在以下 git 项目中找到:https://github.com/elda27/test-gitlab
这是我构建 GitLab 的 Dockerfile。所有配置都存储了上述 URL。
FROM gitlab/gitlab-ce
WORKDIR /var/opt/gitlab/
RUN mkdir -p ./gitlab-rails/etc/ && chown git:git ./gitlab-rails/etc/
RUN mkdir -p ./gitlab-shell && chown git:git ./gitlab-shell
ADD --chown=root:root gitlab.rb /etc/gitlab/gitlab.rb
ADD --chown=root:root relative_url.rb /var/opt/gitlab/gitlab-rails/etc/relative_url.rb
ADD --chown=root:root puma.rb /var/opt/gitlab/gitlab-rails/etc/puma.yml
ADD --chown=root:git gitlab.yml /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
ADD --chown=root:git config.yml /var/opt/gitlab/gitlab-shell/config.yml
WORKDIR /
请告知配置更改。
答案1
我参考以下文档解决了问题: https://docs.gitlab.com/omnibus/settings/configuration.html
我需要external_url
在 中设置并禁用内部 NGINX /etc/gitlab/gitlab.rb
。
# See: https://docs.gitlab.com/omnibus/settings/nginx.html#using-a-non-bundled-web-server
external_url "http://localhost/git"
# NGINX config
nginx['enable'] = false
web_server['external_users'] = ['nginx']
web_server['username'] = 'nginx'
# web_server['group'] = 101
# rails config
gitlab_rails['trusted_proxies'] = ['172.17.0.0/16']
# HTTPS config
nginx['redirect_http_to_https'] = false
registry_nginx['redirect_http_to_https'] = false
mattermost_nginx['redirect_http_to_https'] = false
letsencrypt['enable'] = false
外部NGINX的配置如下。
upstream gitlab {
# Unix socket for Gitlabs
server unix:/var/opt/gitlab/gitlab-workhorse/sockets/socket;
}
server {
listen 0.0.0.0:80 default_server;
listen [::]:80;
server_tokens off; # Disable the nginx server version
location ^~ /git/ {
client_max_body_size 0;
gzip off;
# https://github.com/gitlabhq/gitlabhq/issues/694
# Some requests take more than 30 seconds.
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# rewrite ^/git/(.*)$ /$1 break;
# proxy_pass http://gitlab:8080;
proxy_pass http://gitlab;
}
location / {
root /opt/app;
index index.html index.html;
}
}
我搞错了源安装和 Omnibus GitLab 之间的区别。它们的配置是单独记录的,但我不知道。所有配置都写/etc/gitlab/gitlab.rb
在 docker 容器中的 Omnibus GitLab 上。