如何使用nginx(用docker部署)反向代理gitlab(也与docker一起部署)

问题描述 投票:0回答:2

i根据官方文件安装了gitlab。

sudo docker run --detach \ --hostname git.xxx.com \ --publish 8443:443 --publish 880:80 --publish 822:22 \ --name gitlab \ --restart always \ --volume $GITLAB_HOME/config:/etc/gitlab \ --volume $GITLAB_HOME/logs:/var/log/gitlab \ --volume $GITLAB_HOME/data:/var/opt/gitlab \ --shm-size 256m \ gitlab/gitlab-ee:latest
现在我想使用

Nginx(由我自己安装)逆转代理gitlab而不是gitlab容器随附的nginx。 根据fifficial Documentation我在

gitlab.rb

中添加了一些代码 # Define the external url external_url 'http://git.stupidpz.com' # Disable the built-in nginx nginx['enable'] = false # Disable the built-in puma puma['enable'] = false # Set the internal API URL gitlab_rails['internal_api_url'] = 'http://git.stupidpz.com' # Define the web server process user (ubuntu/nginx) web_server['external_users'] = ['nginx']

到达gitlab无法访问,我在此文件中找到了一些错误日志

/var/log/gitblab/gitlab_workhorse/current

{"correlation_id":"","duration_ms":0,"error":"badgateway: failed to receive response: dial tcp 127.0.0.1:8080: connect: connection refused","level":"error","method":"GET","msg":"","time":"2023-01-25T20:57:21Z","uri":""} {"correlation_id":"","duration_ms":0,"error":"badgateway: failed to receive response: dial tcp 127.0.0.1:8080: connect: connection refused","level":"error","method":"GET","msg":"","time":"2023-01-25T20:57:31Z","uri":""} {"correlation_id":"","duration_ms":0,"error":"badgateway: failed to receive response: dial tcp 127.0.0.1:8080: connect: connection refused","level":"error","method":"GET","msg":"","time":"2023-01-25T20:57:41Z","uri":""} {"correlation_id":"","duration_ms":0,"error":"badgateway: failed to receive response: dial tcp 127.0.0.1:8080: connect: connection refused","level":"error","method":"GET","msg":"","time":"2023-01-25T20:57:51Z","uri":""}

除了在
gitlab.rb

中添加一些代码外,别无其他。
我想知道这是从哪里来的?
我希望你能帮助我,或给我一个正确的演示。谢谢。这个问题一直困扰着我两天

	

现在我弄清楚为什么我无法使它起作用,我混合了现有的乘客/nginx安装

,然后使用非捆绑的Web-Server

如果您只需要使用自己的nginx来代理gitlab(两个都安装在Docker上) 您只需要向

dial tcp 127.0.0.1:8080

添加两行。
docker nginx gitlab
2个回答
3
投票

这是Nginx的conf # Disable the built-in nginx nginx['enable'] = false # Define the web server process user (ubuntu/nginx) web_server['external_users'] = ['nginx'] last,但并非最不重要的一点是,您需要在Nginx的容器中添加另一个bash, upstream gitlab-workhorse { server unix://var/opt/gitlab/gitlab-workhorse/sockets/socket fail_timeout=0; } server { listen *:80; server_name git.example.com; server_tokens off; root /opt/gitlab/embedded/service/gitlab-rails/public; client_max_body_size 250m; access_log /var/log/gitlab/nginx/gitlab_access.log; error_log /var/log/gitlab/nginx/gitlab_error.log; # Ensure Passenger uses the bundled Ruby version passenger_ruby /opt/gitlab/embedded/bin/ruby; # Correct the $PATH variable to included packaged executables passenger_env_var PATH "/opt/gitlab/bin:/opt/gitlab/embedded/bin:/usr/local/bin:/usr/bin:/bin"; # Make sure Passenger runs as the correct user and group to # prevent permission issues passenger_user git; passenger_group git; # Enable Passenger & keep at least one instance running at all times passenger_enabled on; passenger_min_instances 1; location ~ ^/[\w\.-]+/[\w\.-]+/(info/refs|git-upload-pack|git-receive-pack)$ { # 'Error' 418 is a hack to re-use the @gitlab-workhorse block error_page 418 = @gitlab-workhorse; return 418; } location ~ ^/[\w\.-]+/[\w\.-]+/repository/archive { # 'Error' 418 is a hack to re-use the @gitlab-workhorse block error_page 418 = @gitlab-workhorse; return 418; } location ~ ^/api/v3/projects/.*/repository/archive { # 'Error' 418 is a hack to re-use the @gitlab-workhorse block error_page 418 = @gitlab-workhorse; return 418; } # Build artifacts should be submitted to this location location ~ ^/[\w\.-]+/[\w\.-]+/builds/download { client_max_body_size 0; # 'Error' 418 is a hack to re-use the @gitlab-workhorse block error_page 418 = @gitlab-workhorse; return 418; } # Build artifacts should be submitted to this location location ~ /ci/api/v1/builds/[0-9]+/artifacts { client_max_body_size 0; # 'Error' 418 is a hack to re-use the @gitlab-workhorse block error_page 418 = @gitlab-workhorse; return 418; } # Build artifacts should be submitted to this location location ~ /api/v4/jobs/[0-9]+/artifacts { client_max_body_size 0; # 'Error' 418 is a hack to re-use the @gitlab-workhorse block error_page 418 = @gitlab-workhorse; return 418; } # For protocol upgrades from HTTP/1.0 to HTTP/1.1 we need to provide Host header if its missing if ($http_host = "") { # use one of values defined in server_name set $http_host_with_default "git.example.com"; } if ($http_host != "") { set $http_host_with_default $http_host; } location @gitlab-workhorse { ## https://github.com/gitlabhq/gitlabhq/issues/694 ## Some requests take more than 30 seconds. proxy_read_timeout 3600; proxy_connect_timeout 300; proxy_redirect off; # Do not buffer Git HTTP responses proxy_buffering off; proxy_set_header Host $http_host_with_default; 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; proxy_pass http://gitlab-workhorse; ## The following settings only work with NGINX 1.7.11 or newer # ## Pass chunked request bodies to gitlab-workhorse as-is # proxy_request_buffering off; # proxy_http_version 1.1; } ## Enable gzip compression as per rails guide: ## http://guides.rubyonrails.org/asset_pipeline.html#gzip-compression ## WARNING: If you are using relative urls remove the block below ## See config/application.rb under "Relative url support" for the list of ## other files that need to be changed for relative url support location ~ ^/(assets)/ { root /opt/gitlab/embedded/service/gitlab-rails/public; gzip_static on; # to serve pre-gzipped version expires max; add_header Cache-Control public; } ## To access Grafana location /-/grafana/ { proxy_pass http://localhost:3000/; } error_page 502 /502.html; }

这将使您的nginx容器连接到gitlab容器。
    

看起来您正在将GitLab实例安装为远程主机上的自定义Git服务器。其中有3个必须起作用。

DNS设置,远程主机的端口和防火墙设置。 在远程主机上安装gitlab。

VALIDSSL证书和https的正确nginx配置。
第一步确实取决于您的虚拟机和容器的设置,但是从本质上讲,请确保它(VM或容器)具有响应请求的公共端口。
这些变量必须在远程主机的环境中设置为

-批量$ gitlab_home/config:/etc/gitlab
 -  VOLUME $ GITLAB_HOME/logs:/var/log/gitlab
- VOLUME $ GITLAB_HOME/DATA:/var/opt/gitlab \

上面的URL覆盖所有GitLab安装步骤后,您签署并确认其已正确安装,并且它按预期运行在该远程主机上。

0
投票
.

设置https。 可以找到Nginx配置的一个示例
    HEREY。 Mozilla也有一个工具,它使构建自定义的Nginx配置更容易,发现了
  1. here。
  2. 您显示的错误具有此URL“ 127.0.0.1:8080”。您很可能已将此URL提供给gitlab.rb配置某个地方,这可能是一个错误。但是,我不能确定没有整个配置文件。 此外,GitLab映像可能需要运行自己的NGINX实例,以便启动时上述容器可以完成工作并充当Git服务器。要逆转此GitLab实例,您可能需要将NGINX安装到主机机器上,并将其指向Gitlab Image的Nginx.
  3. 您可以通过将新服务器{}块附加到GitLab Image的Nginx配置中来消除第二个Nginx实例。我不建议这样做。
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.