如何configurationnginx在SubURI上提供gitlabhq

gitlabnginxconfiguration是:

# GITLAB # Maintainer: @randx # App Version: 3.0 upstream gitlab { server unix:/home/gitlab/gitlab/tmp/sockets/gitlab.socket; } server { listen YOUR_SERVER_IP:80; # eg, listen 192.168.1.1:80; server_name YOUR_SERVER_FQDN; # eg, server_name source.example.com; root /home/gitlab/gitlab/public; # individual nginx logs for this gitlab vhost access_log /var/log/nginx/gitlab_access.log; error_log /var/log/nginx/gitlab_error.log; location / { # serve static files from defined root folder;. # @gitlab is a named location for the upstream fallback, see below try_files $uri $uri/index.html $uri.html @gitlab; } # if a file, which is not found in the root folder is requested, # then the proxy pass the request to the upsteam (gitlab unicorn) location @gitlab { proxy_read_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 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; } } 

我应该更改服务gitlab作为surURI,www.mysuperserver.com/gitlab

我已经尝试了许多不同的东西,但没有任何工作谢谢

从Gitlab 5.3开始,您可以使用官方安装文档将其配置为在开箱即用的情况下运行。

取消注释config / puma.rb的第8行:ENV ['RAILS_RELATIVE_URL_ROOT'] =“/”

对于config / gitlab.yml中的第23行也是如此:relative_url_root:/

我根本不需要修改我的nginx配置。

我已经成功地在一个subdir url下工作。

  • 请遵循源代码中的说明,如/home/git/gitlab/config/gitlab.yml
     #取消注释并自定义在非根路径中运行的最后一行
     #警告:我们建议创建一个FQDN来托管GitLab而不是这个。
     #请注意,需要更改四个设置才能正常工作。
     #1)在你的application.rb文件中:config.relative_url_root =“/ gitlab”
     #2)在你的gitlab.yml文件中:relative_url_root:/ gitlab
     #3)在你的unicorn.rb:ENV ['RAILS_RELATIVE_URL_ROOT'] =“/ gitlab”
     #4)在../gitlab-shell/config.yml中:gitlab_url:“http://127.0.0.1/gitlab”
     #要更新路径,请运行:sudo -u git -H bundle exec rake assets:precompile RAILS_ENV = production
     #
     relative_url_root:/ gitlab
  • 改变nginx配置服务suburi,plz参考我的例子如下:

关键点是上下文server下的rootlocation下的alias 。 有关更多详细信息,请参阅nginx陷阱 , nginx根注释 。

 # default.conf for nginx upstream gitlab { server unix:/home/git/gitlab/tmp/sockets/gitlab.socket; } server { listen 80; server_name $YOUR_DOMAIN; # other settings, especially root settings, like below # root /usr/local/nginx/html; location /gitlab { # serve static files from defined root folder; alias /home/git/gitlab/public; # individual nginx logs for this gitlab vhost access_log /var/log/nginx/gitlab_access.log; error_log /var/log/nginx/gitlab_error.log; # @gitlab is a named location for the upstream fallback, see below try_files $uri $uri/index.html $uri.html @gitlab; } location @gitlab { proxy_read_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 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_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://gitlab; } # other locations' settings... } 

对于旧版本,例如gitlab 7.4.5,没有gitlab-git-http-server(gitlab-workhorse)。 但有一些解决方案gitlab 7.4.5在文档中使用suburi。

配置/ application.rb中

 # Relative url support # Uncomment and customize the last line to run in a non-root path # WARNING: We recommend creating a FQDN to host GitLab in a root path instead of this. # Note that following settings need to be changed for this to work. # 1) In your application.rb file: config.relative_url_root = "/gitlab" # 2) In your gitlab.yml file: relative_url_root: /gitlab # 3) In your unicorn.rb: ENV['RAILS_RELATIVE_URL_ROOT'] = "/gitlab" # 4) In ../gitlab-shell/config.yml: gitlab_url: "http://127.0.0.1/gitlab" # 5) In lib/support/nginx/gitlab : do not use asset gzipping, remove block starting with "location ~ ^/(assets)/" # # To update the path, run: sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production # # config.relative_url_root = "/gitlab" 

配置/ gitlab.yml

 # WARNING: See config/application.rb under "Relative url support" for the list of # other files that need to be changed for relative url support # relative_url_root: /gitlab 

配置gitlab 7.4.5与其他网站使用相同的端口和相同的域名在nginx配置或apache配置文件似乎仍然是一个挑战。 我没有得到这个。 我可以通过www.mydomain.com/gitlab访问gitlab,但是我没有在www.mydomain.com的另一个根目录下找到我的另一个网站。 它应该通过配置nginx或apache来消除。 希望熟悉nginx或apache的人可以提供一个解决方案。

其他参考。 支持在相对URL路径或子目录#1950中安装GitLab

编辑
它现在有效。

stackoverflow建议使用www.example.com作为例子在这里。

http://www.example.com/gitlab访问gitlab。

http://www.example.com访问另一个网站,比如我的博客。

脚步:

  1. config / application.rb文件:config.relative_url_root =“/ gitlab”
  2. config / gitlab.yml文件:relative_url_root:/ gitlab
  3. config / unicorn.rb:ENV ['RAILS_RELATIVE_URL_ROOT'] =“/ gitlab”
  4. ../gitlab-shell/config.yml:gitlab_url:“http://www.example.com/gitlab "http://www.example.com/gitlab"
  5. 把lib / support / nginx / gitlab复制到gitlab.conf中,不要使用资源gzip,从"location ~^/(assets)/"
  6. 运行:sudo -u git -H bundle exec rake assets:预编译RAILS_ENV =生产

网址:

  1. config / gitlab.yml文件:主机:example.com端口:80
  2. config / unicorn.rb:听“127.0.0.1:9095”
  3. ../gitlab-shell/config.yml:gitlab_url:http://www.example.com/gitlab

gitlab会给git的两种访问方式:

  1. git@example.com:样品project.git
  2. http://example.com/gitlab/sample-project.git

我没有使用https。

如果你得到:

您可以将config/gitlab.yml配置为host: example.com/gitlab 。 只要删除/gitlab

nginx配置文件:

 ################################### ## configuration ## ################################### ## upstream gitlab { server unix:/home/git/gitlab/tmp/sockets/gitlab.socket fail_timeout=0; } ## Normal HTTP host server { #listen *:80 default_server; listen *:80 default_server; server_name www.example.com; ## Replace this with something like gitlab.example.com server_tokens off; ## Don't show the nginx version number, a security best practice #root /home/git/gitlab/public; root html; location /{ #root html; index index.html index.htm; } ## Increase this if you want to upload large attachments ## Or if you want to accept large git objects over http client_max_body_size 20m; ## Individual nginx logs for this GitLab vhost access_log logs/example.gitlab_access.log; error_log logs/example.gitlab_error.log; location /gitlab { alias /home/git/gitlab/public; ## Serve static files from defined root folder. ## @gitlab is a named location for the upstream fallback, see below. try_files $uri $uri/index.html $uri.html @gitlab; } ## If a file, which is not found in the root folder is requested, ## then the proxy passes the request to the upsteam (gitlab unicorn). location @gitlab { ## If you use HTTPS make sure you disable gzip compression ## to be safe against BREACH attack. # gzip off; ## https://github.com/gitlabhq/gitlabhq/issues/694 ## Some requests take more than 30 seconds. proxy_read_timeout 300; proxy_connect_timeout 300; proxy_redirect off; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Frame-Options SAMEORIGIN; proxy_pass http://gitlab; } ## Enable gzip compression as per rails guide: ## http://guides.rubyonrails.org/asset_pipeline.html#gzip-compression ## WARNING: If you are using relative urls remove the block below ## See config/application.rb under "Relative url support" for the list of ## other files that need to be changed for relative url support #location ~ ^/(assets)/ { # root /home/git/gitlab/public; # #gzip_static on; # to serve pre-gzipped version # expires max; # add_header Cache-Control public; #} error_page 502 /502.html; } 

Apache(2.2.9)配置文件:参考gitlab 6.0.6和gitlab-8.0-apache2.2.conf的gitlab 8.0.0在Apache 2.2上

 # modulee dependencies # mod_rewrite # mod_proxy # mod_proxy_http <VirtualHost *:80> serverAdmin admin@example.com DocumentRoot "/data/webapp/www/wordpress" serverName www.example.com serverAlias example.com #ErrorLog "logs/wordpress-error_log" #CustomLog "logs/wordpress-access_log" common #SetEnv ZF2_PATH "/data/webapp/www/ZendFramework-2.3.3/library" SetEnv APPLICATION_ENV "development" <Directory /data/webapp/www/wordpress> DirectoryIndex index.php AllowOverride All Order allow,deny Allow from all </Directory> #serverName www.example.com serverSignature Off ProxyPreserveHost On # Ensure that encoded slashes are not decoded but left in their encoded state. # http://doc.gitlab.com/ce/api/projects.html#get-single-project AllowEncodedSlashes NoDecode <Location /gitlab> Order deny,allow Allow from all ProxyPassReverse http://127.0.0.1:9095 ProxyPassReverse http://www.example.com// RewriteEngine on #RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule .* http://127.0.0.1:9095%{REQUEST_URI} [P,QSA,NE] </Location> #apache equivalent of nginx try files # http://serverfault.com/questions/290784/what-is-apaches-equivalent-of-nginxs-try-files # http://stackoverflow.com/questions/10954516/apache2-proxypass-for-rails-app-gitlab # RewriteEngine on # RewriteCond /code/gitlab/{REQUEST_FILENAME} !-f # RewriteRule .* http://127.0.0.1:9095%{REQUEST_URI} [P,QSA,NE] # needed for downloading attachments #DocumentRoot /home/git/gitlab/public Alias /gitlab /home/git/gitlab/public #Set up apache error documents, if back end goes down (ie 503 error) then a maintenance/deploy page is thrown up. ErrorDocument 404 /404.html ErrorDocument 422 /422.html ErrorDocument 500 /500.html ErrorDocument 503 /deploy.html LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded ErrorLog logs/example.com_error.log CustomLog logs/example.com_forwarded.log common_forwarded CustomLog logs/example.com_access.log combined env=!dontlog CustomLog logs/example.com.log combined </VirtualHost> 

你有没有解决这个问题呢?

如果不是,请尝试将location /指令更新为:

 location /gitlab { # serve static files from defined root folder;. root /home/gitlab/gitlab/public; # @gitlab is a named location for the upstream fallback, see below try_files $uri $uri/index.html $uri.html @gitlab; } 

如果这不起作用,请粘贴/var/log/nginx/gitlab_error.log的最后几行。

这个配置工作

 # GITLAB # Maintainer: @randx # App Version: 3.0 upstream gitlab { server unix:/home/gitlab/gitlab/tmp/sockets/gitlab.socket; } server { listen 80; # eg, listen 192.168.1.1:80; 37.59.125.28: server_name gitlab.<YOUR_DOMAIN>.com; # eg, server_name source.example.com; root /home/gitlab/gitlab/public; # individual nginx logs for this gitlab vhost access_log /var/log/nginx/gitlab_access.log; error_log /var/log/nginx/gitlab_error.log; location / { # serve static files from defined root folder;. # @gitlab is a named location for the upstream fallback, see below try_files $uri $uri/index.html $uri.html @gitlab; } # if a file, which is not found in the root folder is requested, # then the proxy pass the request to the upsteam (gitlab unicorn) location @gitlab { proxy_read_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 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; } } 

而且我在nginx可用配置和启用的配置之间有一个不好的符号链接。