alias do GitLab para nginx

2

Eu instalei o GitLab 6.1 em um novo servidor Ubuntu 13.04, gostaria que o GitLab fosse servido em um local como

http://192.168.1.5/gitlab

Meu arquivo / etc / nginx / sites-available / default:

upstream gitlab {
    server unix:/home/git/gitlab/tmp/sockets/gitlab.socket;
}

server {
    listen 80;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name localhost 192.168.1.5;
    server_tokens off;

    location /gitlab {
        alias /home/git/gitlab/public;
        try_files $uri $uri/index.html $uri.html @gitlab;
    }

    location @gitlab {
        proxy_read_timeout 300; 
        proxy_connect_timeout 300; 
        proxy_redirect     off;

        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_set_header   Host              $http_host;
        proxy_set_header   X-Real-IP         $remote_addr;

        proxy_pass http://gitlab;
    }

    location / {
        try_files $uri $uri/ /index.html;
   }
}

Eu sou novo no nginx, mas pelo que entendi a diretiva alias deve ser semelhante ao alias no Apache. Esta configuração apenas 404s ao navegar para

http://192.168.1.5/gitlab

Se eu alterar a localização do / gitlab para / e comentar o outro / local, posso navegar para

http://192.168.1.5/ 

e acesse a instância do GitLab.

Editar

Parece que o GitLab não possui subdiretórios oficiais, mas os desenvolvedores sugerem o uso de sub-domínios. Existe algum suporte não oficial e documentação em sub-diretórios. Após os comentários nos arquivos de configuração do GitLab e neste tópico ( link ), consegui que funcionasse:

1) Comentário em config.relative_url_root = "/myproject" em config/application.rb

2) Atualize config.assets.version = '1.0.1' em config/application.rb

3) Comentário em relative_url_root: /gitlab em config/gitlab.yml

4) Adicione ENV['RAILS_RELATIVE_URL_ROOT'] = "/gitlab" ao topo de config/unicorn.rb

5) Executar sudo -u git -H RAILS_ENV=production bundle exec rake assets:precompile

6) Executar sudo service gitlab restart

7) Executar sudo service nginx restart

Agora, a configuração nginx acima exibe o GitLab ao navegar para http:\192.168.1.5\gitlab . Isso pode não ser ideal para um env de produção porque ele não é oficialmente suportado pelo GitLab, mas parece funcionar.

    
por lee 24.09.2013 / 03:10

2 respostas

1

Ao criar um alias de diretórios, verifique se os caminhos em alias e seu correspondente location têm um caractere / da barra final.

    
por 24.09.2013 / 03:12
0

para sua pergunta sobre alias: é um pouco "complicado"; dos documentos

Esta diretiva atribui um caminho a ser usado como base para atender solicitações para o local indicado. Observe que ele pode parecer semelhante à diretiva raiz à primeira vista, mas a raiz do documento não muda, apenas o caminho do sistema de arquivos usado para a solicitação. A parte do local da solicitação é descartada nos problemas de Nginx da solicitação. Vamos ver isso em ação. Considere o seguinte exemplo.

location  /i/ {
  alias  /spool/w3/images/;
}

Uma solicitação para "/i/top.gif" instruirá o Nginx a exibir o arquivo "/spool/w3/images/top.gif". Como você pode ver, apenas a parte do URI após o local é anexada. O local em si, nesse caso "/ i /", é descartado. Com uma diretiva raiz, o caminho completo é anexado, ou seja, no exemplo acima, teria sido "/spool/w3/images/i/top.gif" - portanto, incluindo também o local "/i/".

Aliases can also be used in a location specified by a regex.

Por exemplo:

location ~ ^/download/(.*)$ {
  alias /home/website/files/$1;
}

se puder, evite o alias e use a diretiva raiz, mesmo em contexto de localização.

    
por 24.09.2013 / 08:26

Tags