我已经在一台全新的 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 新手,但据我所知,别名指令应该类似于 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
relative_url_root: /gitlab
3 )评论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 官方支持,但它似乎确实有效。
答案1
alias
当为目录添加别名时,请确保其对应的路径末尾location
都有斜杠/
字符。
答案2
对于你关于别名的问题:这有点“棘手”;从文档
此指令指定一个路径,用作处理指定位置请求的基础。请注意,乍一看,它可能与 root 指令相似,但文档根目录不会改变,只是用于请求的文件系统路径会改变。请求的位置部分在 Nginx 发出的请求中被删除。让我们看看实际效果。请考虑以下示例。
location /i/ {
alias /spool/w3/images/;
}
对“/i/top.gif”的请求将指示 Nginx 提供文件“/spool/w3/images/top.gif”。如您所见,只附加了位置后面的 URI 部分。位置本身(在本例中为“/i/”)被删除。使用 root 指令会附加完整路径,即在上面的示例中,它应该是“/spool/w3/images/i/top.gif” — 因此也包括位置“/i/”。
别名也可以在正则表达式指定的位置使用。
例如:
location ~ ^/download/(.*)$ {
alias /home/website/files/$1;
}
如果可以,请避免使用别名并使用根指令,即使在位置上下文中也是如此。