GitLab别名为nginx

我已经在新鲜的Ubuntu 13.04服务器上安装GitLab 6.1,我希望有一个位置的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的新手,但是从我所了解的alias指令应该类似于Apache中的别名。 导航到这个configuration只是404s

 http://192.168.1.5/gitlab 

如果我将/ gitlab位置更改为/并将其他/位置注释掉,则可以导航到

 http://192.168.1.5/ 

并访问GitLab实例。

编辑

看起来GitLab没有正式的子目录,开发者build议使用子域。 子目录有一些非官方的支持和文档。 在GitLabconfiguration文件和这个线程( https://github.com/gitlabhq/gitlabhq/pull/4670 )中的意见之后,我能够得到它的工作:

1)在config/application.rb中的config.relative_url_root = "/myproject"中注释

2)在config/application.rb更新config.assets.version = '1.0.1'

3)注释在config/gitlab.yml中的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

现在,上面的nginxconfiguration在浏览到http:\\192.168.1.5\gitlab时提供了GitLab。 这可能不是理想的生产env,因为它不是由GitLab正式支持,但它似乎工作。

在别名目录时,请确保alias及其相应location中的path具有尾部的斜杠/字符。

对于你的别名问题:它有点“棘手”; 从文档

该指令分配一个path作为服务请求指定位置的基础。 请注意,它可能看起来类似于root指令,但是文档根目录不会改变,只是用于请求的文件系统path。 请求的位置部分在请求Nginx问题中被丢弃。 让我们看看这个在行动。 考虑下面的例子。

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

对“/i/top.gif”的请求将指示Nginx提供文件“/spool/w3/images/top.gif”。 正如你所看到的,只有位置后面的URI部分被追加。 在这种情况下,位置本身“/ i /”被丢弃。 使用root指令后,会附加完整的path,即在上面的例子中,它会是“/spool/w3/images/i/top.gif” – 因此也包括位置“/ i /”。

别名也可以在由正则expression式指定的位置使用。

例如:

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

如果可以的话,避免别名,甚至在位置上下文中使用root-directive。