AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 696924
Accepted
rubo77
rubo77
Asked: 2022-03-27 05:12:54 +0800 CST2022-03-27 05:12:54 +0800 CST 2022-03-27 05:12:54 +0800 CST

Instale o gitlab em uma VM com docker-compose com um proxy adicionando https em outra vm

  • 772

Tenho um servidor com várias máquinas virtuais e uma delas é meu Proxy que direciona os domínios certos para a VM certa na porta certa.

  1. Eu usei o arquivo padrão docker-compose para criar gitlab-ce e gitlab-runner
  2. Redireciono por domínio no proxy para a porta 8080 na minha VM docker

Isso tudo funcionou bem e eu pude fazer login no meu navegador com https://gitlab.mydomain.de .

Agora o problema: todos os links para runners e os links para clones de repositórios começam com http://localhostem vez de https://gitlab.mydomain.de.

A opção GITLAB_OMNIBUS_CONFIG-> external_urlno arquivo docker-compose está contendo http://localhost, então mudei para https://gitlab.mydomain.de , parei e reiniciei os contêineres do docker

docker-compose down; docker-compose up

Mas desta vez só recebo um erro 502 Bad Gateway no navegador.

Esta é a minha configuração de proxy:

server {
  listen 10.77.77.254:443 ssl;
  listen [2a01:4f8:241:1d02:0:77:77:254]:443 ssl;
  server_name gitlab.mydomain.de;
  include snippets.d/ssl_generic;
  ssl_certificate     /etc/letsencrypt/live/gitlab.mydomain.de/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/gitlab.mydomain.de/privkey.pem;
  include snippets.d/standard;
  location / {
      include                     snippets.d/proxy_generic;
      proxy_pass                  http://10.77.77.107:8080;
  }
}

Este é o meu docker-compose.yml:

version: '3.7'
services:
  web:
    image: 'gitlab/gitlab-ce:latest'
    restart: always
    hostname: 'localhost'
    container_name: gitlab-ce
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://gitlab.mydomin.de'
    ports:
      - '8080:80'
      - '8443:443'
    volumes:
      - '/var/docker/gitlab/config:/etc/gitlab'
      - '/var/docker/gitlab/logs:/var/log/gitlab'
      - '/var/docker/gitlab/data:/var/opt/gitlab'
    networks:
      - gitlab
  gitlab-runner:
    image: gitlab/gitlab-runner:alpine
    container_name: gitlab-runner    
    restart: always
    depends_on:
      - web
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - '/var/docker/gitlab/gitlab-runner:/etc/gitlab-runner'
    networks:
      - gitlab

networks:
  gitlab:
    name: gitlab-network

Se eu mudar

external_url 'https://gitlab.mydomain.de'

voltar para http

external_url 'http://gitlab.mydomain.de'

então a configuração funciona novamente (mas com os URLs errados começando com apenas 'http://' agora na interface da web).

O problema parece estar httpsno external_url.

Se eu alterar o proxy_pass para http://10.77.77.107:8433onde a porta ssl é apresentada ao host no arquivo docker-compose, recebo um erro 400 Bad Request :

400 Bad Request The plain HTTP request was sent to HTTPS port

ATUALIZAÇÃO: Aqui eles dizem:

Por padrão, quando você especifica external_url, o Omnibus GitLab definirá alguns cabeçalhos de proxy NGINX que são considerados sensatos na maioria dos ambientes.

Por exemplo, o Omnibus GitLab definirá:

"X-Forwarded-Proto" => "https",
"X-Forwarded-Ssl" => "on"

se você especificou o esquema https no external_url.

No entanto, se você tiver uma situação em que seu GitLab esteja em uma configuração mais complexa, como atrás de um proxy reverso, será necessário ajustar os cabeçalhos do proxy para evitar erros como A alteração desejada foi rejeitada ou Não é possível verificar a autenticidade do token CSRF Completou 422 Inprocessável.

Eu tentei substituir os cabeçalhos padrão. No arquivo docker-compose na seção omnibus, adicionei o X-Forwarded-Proto: http:

environment:
  GITLAB_OMNIBUS_CONFIG: |
    external_url 'https://gitlab.mydomain.de'
    letsencrypt['enabled'] = false
    nginx['listen_port'] = 80
    nginx['proxy_set_headers'] = { "X-Forwarded-Proto" => "http", 'X-Forwarded-Ssl' => 'off' }

Mas isso também não ajudou

Como resolvo isso?

nginx proxy
  • 1 1 respostas
  • 585 Views

1 respostas

  • Voted
  1. Best Answer
    rubo77
    2022-03-28T05:36:42+08:002022-03-28T05:36:42+08:00

    Não há necessidade de substituir os cabeçalhos padrão. No docker-compose.ymlarquivo na seção GITLAB_OMNIBUS_CONFIG apenas adicione nginx['listen_https'] = false:

    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://gitlab.mydomain.de'
        letsencrypt['enabled'] = false
        nginx['listen_https'] = false
        nginx['listen_port'] = 80
    

    Isso desativará o SSL dentro do docker e seu reverse_proxy pode fazer a coisa SSL

    consulte https://docs.gitlab.com/omnibus/settings/nginx.html#external-proxy-and-load-balancer-ssl-termination

    • 0

relate perguntas

  • Configuração php-fpm independente da versão Nginx

  • Localização do Nginx ~ /\.ht

  • Forçar o tráfego de um aplicativo por meio de um proxy SOCKS

  • Hospedando vários aplicativos no Nginx Ubuntu 14.04

  • Como habilitar o proxy_arp presente

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve