Sign up ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

i have gitlab installed on my server and it works on all domains eg:, and * how I can run gitlab only on and another subdomain on

my lars-dev conf:

server {
    listen   *:80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

    root /var/www/webdata/;
    index index.html index.htm;


    location / {
        try_files $uri $uri/ /index.html;

    #error_page 500 502 503 504 /50x.html;
    #location = /50x.html {
    #   root /usr/share/nginx/www;

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #location ~ /\.ht {
    #   deny all;

and the gitlab configuration:

upstream gitlab {
  server unix:/home/git/gitlab/tmp/sockets/gitlab.socket;

server {
  listen *:80;         # e.g., listen; In most cases *:80 is a good idea
  server_name;     # e.g., server_name;
  server_tokens off;     # don't show the version number, a security best practice
  root /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;

  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; #
    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;
share|improve this question

1 Answer 1

up vote 4 down vote accepted

You probably got the as the default domain. so any request that is not matched against an explicitly configured is sent there (e.g. Just try to specify it as a server_name under a separate server.

Read here about how to ensure what server_name is picked up first. Start from server_name * to catch all not explicitly configured subdomains.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.