Gitbucket de proxy reverso via nginx

1

Atualmente, estou tentando fazer o nginx funcionar com o gitbucket usando este tutorial .

Embora este seja o wiki oficial do gitbucket, esta página está muito incompleta e preciso adaptar alguns detalhes do guia para o apache , principalmente o prefixo, para fazer o gitbucket funcionar com o nginx.

Então, meu resultado sites-available/gitbucketé aqui:

server {
    listen   80; # The default is 80 but this here if you want to change it.
    server_name mydomain.xxx;

    location /gitbucket {
        proxy_pass              http://localhost:8080/gitbucket;
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout   150;
        proxy_send_timeout      100;
        proxy_read_timeout      100;
        proxy_buffers           4 32k;
        client_max_body_size    500m; # Big number is we can post big commits.
        client_body_buffer_size 128k;
    }
}

Quando eu o habilito, gitbucketele é http://mydomain.xxx/gitbucketredirecionado para minha instância do gitbucket, mas o nginx para de servir qualquer arquivo de índice que eu coloquei no meu /var/www/htmle, em vez disso, serve a página de índice padrão fornecida quando a instalamos novamente. E ao desativar o gitbucket, o índice da htmlpasta é exibido novamente.

Tentei fazer um ingresso no repositório gitbucket, mas não recebi nenhuma resposta satisfatória. Então, alguém pode me esclarecer esse problema?

Desde já, obrigado!

Vico
fonte
Verifique se você sites-enabledestá lendo na ordem correta.
Seth
Desculpe, eu não entendi o que você quer dizer com "ordem correta". Sou um pouco novato no nginx (sempre usei o apache).
Vico
Você provavelmente ainda tem mais de um arquivo para sites-enabledverificar o conteúdo desse arquivo. Atualmente, você está dizendo ao nginx para responder com um bloco que apenas define /gitbucket. Ter um olhar para este oceano Digital Artigo: Servidor Nginx Compreensão e local do bloco Seleção Algoritmos
Seth
Eu tenho. gitbucket(ive criado) e default(aquele enviado com nginx). Mas o wiki deixa implícito que eu preciso criar um sites-enabledarquivo separado para lidar com o gitbucket.
Vico
11
Não. É um exemplo, mas você não precisa ter um arquivo separado. Você pode facilmente colocar o bloco de localização no seu arquivo padrão ou vice-versa. Você não pode ter dois arquivos com a mesma diretiva de escuta e nome de servidor. Um sempre terá precedência.
Seth

Respostas:

1

O tutorial que você vinculou fornece um exemplo muito específico para o gitbucket.

Se você estiver configurando sites usando o nginx, lembre-se de que cada site tem várias configurações e que existe uma lógica que determinará o que tem precedência quando. Este artigo sobre oceano digital intitulado "Entendendo os algoritmos de seleção de servidor Nginx e bloco de local" sobre como isso é determinado.

Pelo que você explicou em seus comentários, você terminou com dois arquivos do site. Um sendo o arquivo padrão no qual você define sua raiz comum para o seu site e outro para o gitbucket que apenas continha o bloco de localização do gitbucket e (isso é importante) uma diretiva de escuta e uma diretiva de nome de servidor.

A primeira etapa que o nginx executa para determinar qual site entregar é descobrir qual bloco de servidor usar. Como atualmente, você provavelmente tem dois blocos de servidor com a mesma definição. Seu bloco padrão e gitbucket estão ouvindo a porta 80 com o mesmo nome de servidor. Então, um sempre substituirá o outro.

Se você quer que ambos trabalhem, você tem algumas opções:

  • Defina um site para uma porta diferente usando a diretiva listen.
  • Altere o nome do servidor para qualquer site. Isso também pode incluir um subdomínio. Sempre que isso funciona ou não, pode depender da configuração de DNS do site.
  • Basta incluir o bloco de localização da sua configuração do gitbucket no seu arquivo padrão.

Um bloco de localização, como o nome indica, apenas define configurações para uma localização muito específica. Realmente não precisa de um bloco de servidor independente, pelo menos não se for uma definição tão básica.

Seth
fonte
11
Sim! Foi o que eu fiz: acabei de incluir o local por padrão. Obrigado por formalizar isso!
Vico