Назад | Перейти на главную страницу

GitLab псевдоним для nginx

Я установил GitLab 6.1 на новый сервер Ubuntu 13.04, я бы хотел, чтобы GitLab обслуживался из такого места, как

http://192.168.1.5/gitlab

Мой файл / 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;
   }
}

Я новичок в nginx, но, насколько я понимаю, директива псевдонима должна быть похожа на псевдоним в Apache. Эта конфигурация всего 404 с при переходе к

http://192.168.1.5/gitlab

Если я изменю местоположение / gitlab на / и закомментирую другое местоположение /, я могу перейти к

http://192.168.1.5/ 

и получить доступ к экземпляру GitLab.

редактировать

Похоже, что в GitLab официально нет подкаталогов, разработчики предлагают вместо этого использовать поддомены. По подкаталогам есть неофициальная поддержка и документация. Следуя комментариям в файлах конфигурации GitLab и этой теме (https://github.com/gitlabhq/gitlabhq/pull/4670) Мне удалось заставить его работать:

1) Комментарий в config.relative_url_root = "/myproject" в config/application.rb

2) Обновить config.assets.version = '1.0.1' в config/application.rb

3) Комментарий в relative_url_root: /gitlab в config/gitlab.yml

4) Добавить ENV['RAILS_RELATIVE_URL_ROOT'] = "/gitlab" на вершину config/unicorn.rb

5) Беги sudo -u git -H RAILS_ENV=production bundle exec rake assets:precompile

6) Беги sudo service gitlab restart

7) Беги sudo service nginx restart

Теперь приведенная выше конфигурация nginx обслуживает GitLab при переходе к http:\\192.168.1.5\gitlab. Это может быть не идеально для производственной среды, потому что официально не поддерживается GitLab, но, похоже, работает.

При создании псевдонимов для каталогов убедитесь, что пути в обоих alias и соответствующий location иметь в конце косую черту / персонаж.

на ваш вопрос о псевдониме: это немного "сложно"; из документы

Эта директива назначает путь, который будет использоваться в качестве основы для обслуживания запросов для указанного местоположения. Обратите внимание, что на первый взгляд это может выглядеть похоже на корневую директиву, но корень документа не изменяется, только путь к файловой системе, используемый для запроса. Часть запроса, относящаяся к местоположению, удаляется в запросе Nginx. Посмотрим на это в действии. Рассмотрим следующий пример.

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

Запрос на «/i/top.gif» проинструктирует Nginx обслуживать файл «/spool/w3/images/top.gif». Как видите, добавляется только часть URI после местоположения. Само местоположение, в данном случае "/ i /", отбрасывается. С помощью корневой директивы добавляется полный путь, то есть в приведенном выше примере это было бы «/spool/w3/images/i/top.gif» - следовательно, включая также местоположение «/ i /».

Псевдонимы также могут использоваться в местоположении, указанном регулярным выражением.

Например:

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

по возможности избегайте псевдонимов и используйте корневую директиву даже в контексте местоположения.