<VirtualHost *:80>
  # 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

  AllowEncodedSlashes On

  SetEnv GIT_PROJECT_ROOT /var/gerrit/git
  SetEnv GIT_HTTP_EXPORT_ALL
  ScriptAliasMatch "(?i)^/a/projects/(.*)" "/var/cgi/project_admin.sh"
  ScriptAlias / /usr/libexec/git-core/git-http-backend/
  ScriptLog logs/cgi.log

  # 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 debug authz_core:warn

  # Don't log probe requests performed by kubernetes
  SetEnvIFNoCase User-Agent "^kube-probe" dontlog

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog

  # 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>
  <Files "project_admin.sh">
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /var/apache/credentials/.htpasswd
    Require valid-user
  </Files>
</VirtualHost>
