Я установил 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;
}
по возможности избегайте псевдонимов и используйте корневую директиву даже в контексте местоположения.