Ao criar um alias de diretórios, verifique se os caminhos em alias
e seu correspondente location
têm um caractere /
da barra final.
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.
Ao criar um alias de diretórios, verifique se os caminhos em alias
e seu correspondente location
têm um caractere /
da barra final.
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.