How to configure GitLab as a subdomain in nginix.conf

I used Apache2 before installing GitLab on my VPS. I just want to make GitLab a subdomain of my site (git.example.com) and on my main site (www.example.com) see /var/www/html/index.html

Here is my nginx.conf file:

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; } } } 
+7
source share
3 answers

Here is my setup that works on a subdomain.

 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; } } 
+6
source

Here is what I did, I don’t know if it is optimal, but it works.

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; } } } 

in gitlab.rb , uncomment / edit this line:

 nginx['listen_port'] = 8000 
+2
source

You will need to create two different vhost files for each of the projects (Gitlab and your main site).

In your ghostlab vhost file, you can use the default file by changing some fields:

 # 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 } } 

Then create a new symlink in your / sites-enabled / folder:

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

Restart Nginx service nginx restart .

If still not working, check your error log using tail -f /var/log/nginx/gitlab_error.log . This can help you figure out what else you are missing.

Note: For this answer, the version of PHP that I used was 5.3.10, and the version of Nginx was 1.1.19.

References

How to configure Nginx as a reverse proxy for Apache - https://www.digitalocean.com/community/tutorials/how-to-configure-nginx-as-a-reverse-proxy-for-apache

Tail Team - http://en.wikipedia.org/wiki/Tail_%28Unix%29

+1
source

All Articles