title: nginx runs an subdomain to a new app with an existing website
body: <p>My server already  has an RoR app running on Nginx at port 80 , now I want to set the Gitlab in the same server,</p>
  
  <p>Now, I have to access the Gitlab by <code>myserver:1987/</code></p>
  
  <p>If I want to a access the Gitlab by <code>myserver/gitlab</code></p>
  
  <p>How to achieve it ?</p>
  
  <p>nginx.conf</p>
  
  <pre><code>http{
  include /opt/nginx/sites-enabled/*;
  }
  
  ...
  
  server {
  listen       80;
  server_name  localhost;
  
  passenger_enabled on;
  #charset koi8-r;
  
  #access_log  logs/host.access.log  main;
  
  location / {
      index  index.html index.htm;
      root /home/poc/projects/zeus/public;
      passenger_enabled on;
  }
  </code></pre>
  
  <p>sites-enabled/gitlab.conf</p>
  
  <pre><code># GITLAB
  # Maintainer: @randx
  
  # CHUNKED TRANSFER
  # It is a known issue that Git-over-HTTP requires chunked transfer encoding [0] which is not
  # supported by Nginx &lt; 1.3.9 [1]. As a result, pushing a large object with Git (i.e. a single large file)
  # can lead to a 411 error. In theory you can get around this by tweaking this configuration file and either
  # - installing an old version of Nginx with the chunkin module [2] compiled in, or
  # - using a newer version of Nginx.
  #
  # At the time of writing we do not know if either of these theoretical solutions works. As a workaround
  # users can use Git over SSH to push large files.
  #
  # [0] https://git.kernel.org/cgit/git/git.git/tree/Documentation/technical/http-protocol.txt#n99
  # [1] https://github.com/agentzh/chunkin-nginx-module#status
  # [2] https://github.com/agentzh/chunkin-nginx-module
  
  upstream gitlab {
    server unix:/home/git/gitlab/tmp/sockets/gitlab.socket;
  }
  
  server {
    listen *:1987;         # e.g., listen 192.168.1.1:80; In most cases *:80 is a good idea
    server_name dqa-test;     # e.g., server_name source.example.com;
    server_tokens off;     # don't show the version number, a security best practice
    root /home/git/gitlab/public;
  
    # Increase this if you want to upload large attachments
    # Or if you want to accept large git objects over http
    client_max_body_size 5m;
  
    # individual nginx logs for this gitlab vhost
    access_log  /opt/nginx/logs/gitlab_access.log;
    error_log   /opt/nginx/logs/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; # Some requests take more than 30 seconds.
      proxy_connect_timeout 300; # Some requests take more than 30 seconds.
      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;
    }
  
    error_page 502 /502.html;
  }
  </code></pre>