Gitlab Hompage Returns 404 when using apache (from subfolder)

Running Gitlab CE from a subfolder as opposed to a subdomain, using apache2. The issue is when a user first hits the /gitlab location they get 404’d. If they’re not signed in and they hit /gitlab/users/sign_in they get a sign in page as soon as they sign in they get redirected to /gitlab and get 404’d. If someone browses to /gitlab/SOMEUSERNAME they get that user’s profile and are able to interact as expected.

This seems to most likely be an apache issue…?

My Apache config:

 #This configuration has been tested on GitLab 8.2
# Note this config assumes unicorn is listening on default port 8080 and
# gitlab-workhorse is listening on port 8181. To allow gitlab-workhorse to
# listen on port 8181, edit /etc/gitlab/gitlab.rb and change the following:
#
# gitlab_workhorse['listen_network'] = "tcp"
# gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
#
#Module dependencies
# mod_rewrite
# mod_proxy
# mod_proxy_http

<VirtualHost *:80>
  DocumentRoot "/var/www/html"
  ServerName dev2
  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

 #Gitlab
 Alias /gitlab /opt/gitlab/embedded/service/gitlab-rails/public
  <Location /gitlab>
    # New authorization commands for apache 2.4 and up
    # http://httpd.apache.org/docs/2.4/upgrading.html#access
    Require all granted

    #Allow forwarding to gitlab-workhorse
    ProxyPassReverse http://127.0.0.1:8181
    ProxyPassReverse http://dev2/gitlab

    # 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

    #Forward all requests to gitlab-workhorse except existing files like error documents
    RewriteCond %{REQUEST_URI} ^/api/v3/.*
    RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA,NE]
    RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_URI} ^/uploads/.*
    RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA,NE]

    # needed for downloading attachments
    #DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public

    #Set up apache error documents, if back end goes down (i.e. 503 error) then a maintenance/deploy page is thrown up.
    ErrorDocument 404 /404.html
    ErrorDocument 422 /422.html
    ErrorDocument 500 /500.html
    ErrorDocument 502 /502.html
    ErrorDocument 503 /503.html

  </Location>

    # It is assumed that the log directory is in /var/log/httpd.
    # For Debian distributions you might want to change this to
    # /var/log/apache2.
    LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded
    #ErrorLog /var/log/apache2/logs/dev2_error.log
    #CustomLog /var/log/apache2/logs/dev2_forwarded.log common_forwarded
    #CustomLog /var/log/apache2/logs/dev2_access.log combined env=!dontlog
    #CustomLog /var/log/apache2/logs/dev2.log combined

</VirtualHost>

<Directory /var/www/html/redmine>
  RailsBaseURI /redmine
  PassengerResolveSymlinksInDocumentRoot on
</Directory>

Any help would be much appreciated.

So upon further inspection there is no index page in the gitlab-rails/public directory, should there be? is that the proper directory to alias in this situation?
I understand gitlab was not prevalently designed to be run from a sub-folder, my current use case though does not allow for subdomains to be used.

Did you ever get this figured out? I’m having the same problem.

Setting DirectoryIndex disabled in the apache config fixed it for me.

2 Likes

Glad to hear, I managed to get everything working as expected by reworking the VHost config, Don’t remember what I did exactly but I know it had something to do with ProxyPass.