<VirtualHost *:443>
  # The ServerName directive sets the request scheme, hostname and port that
  # the server uses to identify itself. This is used when creating
  # redirection URLs. In the context of virtual hosts, the ServerName
  # specifies what hostname must appear in the request's Host: header to
  # match this virtual host. For the default virtual host (this file) this
  # value is not decisive as it is used as a last resort host regardless.
  # However, you must set it for any further virtual host explicitly.
  ServerName localhost
  ServerAdmin webmaster@localhost

  UseCanonicalName On

  SetEnv GIT_PROJECT_ROOT /var/gerrit/git
  SetEnv GIT_HTTP_EXPORT_ALL
  ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
  ScriptAliasMatch "(?i)^/new/(.*)" "/var/cgi/create_repo.sh"

  Alias /git /var/gerrit/git

  # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
  # error, crit, alert, emerg.
  # It is also possible to configure the loglevel for particular
  # modules, e.g.
  LogLevel warn

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

  SSLEngine on
  SSLCertificateFile /var/apache/credentials/server.crt
  SSLCertificateKeyFile /var/apache/credentials/server.key

  # For most configuration files from conf-available/, which are
  # enabled or disabled at a global level, it is possible to
  # include a line for only one particular virtual host. For example the
  # following line enables the CGI configuration for this host only
  # after it has been globally disabled with "a2disconf".
  #Include conf-available/serve-cgi-bin.conf
  <Files "git-http-backend">
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /var/apache/credentials/.htpasswd
    Require valid-user
  </Files>
  <Files "create_repo.sh">
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /var/apache/credentials/.htpasswd
    Require valid-user
  </Files>
</VirtualHost>
