如何将GitLabconfiguration为nginix.conf中的子域

在我的VPS上安装GitLab之前,我使用的是Apache2。 我只想让GitLab成为我的网站(git.example.com)的一个子域名,并让我的主网站(www.example.com)查看/var/www/html/index.html

这是我的nginx.conf文件截至目前:

user www-data; worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; # multi_accept on; } http { include /etc/nginx/mime.types; access_log /var/log/nginx/access.log; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay on; gzip on; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; upstream gitlab { server unix:/home/gitlab/gitlab/tmp/sockets/gitlab.socket; } server { listen 80; server_name www.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_redirect off; # you need to change this to "https", if you set "ssl" directive to "on" proxy_set_header X-FORWARDED_PROTO http; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://gitlab; } } } 

这是我的设置在一个子域上的作品。

 server { listen 80; server_name gitlab.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_redirect off; # you need to change this to "https", if you set "ssl" directive to "on" proxy_set_header X-FORWARDED_PROTO http; proxy_set_header Host gitlab.example.com:80; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://gitlab; } } 

这是我所做的,我不知道它是否是最佳的,但它的工作原理。

nginx.conf

 events { worker_connections 1024; } http { include /etc/nginx/mime.types; root .; server { listen 80; server_name www.whatever.com whatever.com; } server { listen 80; server_name gitlab.whatever.com; location / { proxy_pass http://127.0.0.1:8000; } } } 

gitlab.rb ,取消注释/编辑这一行:

 nginx['listen_port'] = 8000 

您将需要为每个项目(Gitlab和您的主站点)创建两个不同的虚拟主机文件。

在你的Gitlab vhost文件中,你可以使用默认的文件,改变一些字段:

 # GITLAB repository upstream gitlab { server unix:/home/git/gitlab/tmp/sockets/gitlab.socket; } server { listen 80; # In most cases *:80 is a good idea server_name git.example.com; # Eg, server_name source.example.com; server_tokens off; # don't show the version number, a security best practice root /home/git/gitlab/public; # Where your repository is located index index.php index.html index.htm; # Extensions to look for # Logs for this gitlab vhost. If something goes wrong, check these files to figure out what is missing 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 is a file that could not be 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-Forwared-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host git.example.org:80; # Host name for your Gitlab Project proxy_pass http://gitlab; # Alias } } 

然后,在/ sites-enabled /文件夹中创建一个新的符号链接:

 $ sudo rm /etc/nginx/sites-enabled/example $ sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example 

重启Nginx service nginx restart

如果仍然不工作,请使用tail -f /var/log/nginx/gitlab_error.log查看错误日志。 这可能会帮助你找出你还缺少什么。

注意:对于这个答案,我使用的PHP版本是5.3.10,而Nginx版本是1.1.19。

参考

如何配置Nginx作为Apache的反向代理 – https://www.digitalocean.com/community/tutorials/how-to-configure-nginx-as-a-reverse-proxy-for-apache

尾巴命令 – http://en.wikipedia.org/wiki/Tail_%28Unix%29