{{< details >}}

  • Tier: 基础版,专业版,旗舰版
  • Offering: 极狐GitLab 私有化部署

{{< /details >}}

本页面为配置极狐GitLab 安装的 NGINX 提供信息。包括优化性能和安全性的基本说明,适用于捆绑的 NGINX(Linux 软件包)、Helm charts 或自定义设置。

服务专用的 NGINX 设置

要配置不同服务的 NGINX 设置,请编辑 gitlab.rb 文件。

{{< alert type=”warning” >}}

不正确或不兼容的配置可能导致服务不可用。

{{< /alert >}}

使用 nginx['<setting>'] 键来配置极狐GitLab Rails 应用的设置。极狐GitLab 提供类似的键用于其他服务,如 pages_nginxmattermost_nginxregistry_nginx。这些 <service_nginx> 设置的配置也可用于 nginx,并与极狐GitLab NGINX 共享相同的默认值。

要为孤立服务如 Mattermost 操作 NGINX,请使用 gitlab_rails['enable'] = false,而不是 nginx['enable'] = false。有关更多信息,请参见 在自己的服务器上运行极狐GitLab Mattermost

修改 gitlab.rb 文件时,分别为每个服务配置 NGINX 设置。使用 nginx['foo'] 指定的设置不会复制到服务专用的 NGINX 配置中(如 registry_nginx['foo']mattermost_nginx['foo'])。例如,要配置极狐GitLab、Mattermost 和 Registry 的 HTTP 到 HTTPS 重定向,请在 gitlab.rb 中添加以下设置:

nginx['redirect_http_to_https'] = true
registry_nginx['redirect_http_to_https'] = true
mattermost_nginx['redirect_http_to_https'] = true

启用 HTTPS

默认情况下,Linux 软件包安装不使用 HTTPS。要为 gitlab.example.com 启用 HTTPS:

如果您使用代理、负载均衡器或其他外部设备终止极狐GitLab 主机名的 SSL,请参见 外部、代理和负载均衡器 SSL 终止

更改默认代理头

默认情况下,指定 external_url 时,Linux 软件包安装会设置适合大多数环境的 NGINX 代理头。

例如,如果在 external_url 中指定 https 模式,Linux 软件包安装会设置:

"X-Forwarded-Proto" => "https",
"X-Forwarded-Ssl" => "on"

如果您的极狐GitLab 实例处于更复杂的设置中,例如在反向代理后面,您可能需要调整代理头以避免以下错误:

  • 您想要的更改被拒绝
  • 无法验证 CSRF 令牌真实性 完成 422 无法处理

要覆盖默认头:

  1. 编辑 /etc/gitlab/gitlab.rb

    nginx['proxy_set_headers'] = {
      "X-Forwarded-Proto" => "http",
      "CUSTOM_HEADER" => "VALUE"
    }
    
  2. 保存文件并 重新配置极狐GitLab 以使更改生效。

您可以指定 NGINX 支持的任何头。

配置极狐GitLab 信任代理和 NGINX real_ip 模块

默认情况下,NGINX 和极狐GitLab 记录连接客户端的 IP 地址。

如果极狐GitLab 位于反向代理后面,您可能不希望代理的 IP 地址显示为客户端地址。

要配置 NGINX 使用其他地址,请将您的反向代理添加到 real_ip_trusted_addresses 列表中:

# 每个地址都作为 'set_real_ip_from <address>;' 添加到 NGINX 配置中
nginx['real_ip_trusted_addresses'] = [ '192.168.1.0/24', '192.168.2.1', '2001:0db8::/32' ]
# 其他 real_ip 配置选项
nginx['real_ip_header'] = 'X-Forwarded-For'
nginx['real_ip_recursive'] = 'on'

有关这些选项的描述,请参见 NGINX realip 模块文档

默认情况下,Linux 软件包安装使用 real_ip_trusted_addresses 中的 IP 地址作为极狐GitLab 信任代理。信任代理配置可防止用户被列为从这些 IP 地址登录。

保存文件并 重新配置极狐GitLab 以使更改生效。

配置 PROXY 协议

要在极狐GitLab 前使用像 HAProxy 的代理和 PROXY 协议

  1. 编辑 /etc/gitlab/gitlab.rb

    # 启用 NGINX 的 ProxyProtocol 终止
    nginx['proxy_protocol'] = true
    # 配置信任的上游代理。如果启用 `proxy_protocol`,则需要。
    nginx['real_ip_trusted_addresses'] = [ "127.0.0.0/8", "IP_OF_THE_PROXY/32"]
    
  2. 保存文件并 重新配置极狐GitLab 以使更改生效。

启用此设置后,NGINX 仅接受这些监听器上的 PROXY 协议流量。调整您可能拥有的其他环境,例如监控检查。

使用非捆绑的 Web 服务器

默认情况下,Linux 软件包使用捆绑的 NGINX 安装极狐GitLab。Linux 软件包安装允许通过 gitlab-www 用户访问 Web 服务器,该用户位于同名的组中。要允许外部 Web 服务器访问极狐GitLab,请将外部 Web 服务器用户添加到 gitlab-www 组中。

要使用其他 Web 服务器如 Apache 或现有的 NGINX 安装:

  1. 禁用捆绑的 NGINX:

    /etc/gitlab/gitlab.rb 中设置:

    nginx['enable'] = false
    
  2. 设置非捆绑 Web 服务器用户的用户名:

    Linux 软件包安装没有外部 Web 服务器用户的默认设置。您必须在配置中指定它。例如:

    • Debian/Ubuntu:默认用户是 www-data,适用于 Apache 和 NGINX。
    • RHEL/CentOS:NGINX 用户是 nginx

    在继续之前安装 Apache 或 NGINX,以便创建 Web 服务器用户。否则,Linux 软件包安装在重新配置期间会失败。

    如果 Web 服务器用户是 www-data,在 /etc/gitlab/gitlab.rb 中设置:

    web_server['external_users'] = ['www-data']
    

    此设置是一个数组,因此您可以指定多个用户添加到 gitlab-www 组中。

    运行 sudo gitlab-ctl reconfigure 以使更改生效。

    如果您使用 SELinux 并且您的 Web 服务器在受限 SELinux 配置文件下运行,您可能需要 放宽对 Web 服务器的限制

    确保 Web 服务器用户对外部 Web 服务器使用的所有目录具有正确的权限。否则,您可能会收到 failed (XX: Permission denied) while reading upstream 错误。

  3. 将非捆绑 Web 服务器添加到信任代理列表:

    Linux 软件包安装通常将信任代理列表默认设置为捆绑 NGINX 的 real_ip 模块中的配置。

    对于非捆绑 Web 服务器,直接配置列表。如果 Web 服务器不在与极狐GitLab 相同的机器上,请包括您的 Web 服务器的 IP 地址。否则,用户似乎是从您的 Web 服务器的 IP 地址登录。

    gitlab_rails['trusted_proxies'] = [ '192.168.1.0/24', '192.168.2.1', '2001:0db8::/32' ]
    
  4. 可选。如果使用 Apache,请设置极狐GitLab Workhorse 设置:

    Apache 不能连接到 UNIX 套接字,必须连接到 TCP 端口。要允许极狐GitLab Workhorse 监听 TCP(默认端口为 8181),请编辑 /etc/gitlab/gitlab.rb

    gitlab_workhorse['listen_network'] = "tcp"
    gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
    

    运行 sudo gitlab-ctl reconfigure 以使更改生效。

  5. 下载正确的 Web 服务器配置:

    转到 极狐GitLab 仓库 并下载所需的配置。选择正确的配置文件用于极狐GitLab 的服务,无论是否使用 SSL。您可能需要更改:

    • YOUR_SERVER_FQDN 的值更改为您的 FQDN。
    • 如果使用 SSL,请更改您的 SSL 密钥的位置。
    • 更改您的日志文件的位置。

NGINX 配置选项

极狐GitLab 提供多种配置选项,以根据您的具体需求定制 NGINX 的行为。使用这些参考项目来微调您的 NGINX 设置,优化极狐GitLab 的性能和安全性。

设置 NGINX 监听地址

默认情况下,NGINX 接受所有本地 IPv4 地址上的传入连接。

要更改地址列表:

  1. 编辑 /etc/gitlab/gitlab.rb

    # 监听所有 IPv4 和 IPv6 地址
    nginx['listen_addresses'] = ["0.0.0.0", "[::]"]
    registry_nginx['listen_addresses'] = ['*', '[::]']
    mattermost_nginx['listen_addresses'] = ['*', '[::]']
    pages_nginx['listen_addresses'] = ['*', '[::]']
    
  2. 保存文件并 重新配置极狐GitLab 以使更改生效。

设置 NGINX 监听端口

默认情况下,NGINX 监听在 external_url 中指定的端口或使用标准端口(HTTP 为 80,HTTPS 为 443)。如果您在反向代理后面运行极狐GitLab,您可能希望覆盖监听端口。

要更改监听端口:

  1. 编辑 /etc/gitlab/gitlab.rb。例如,要使用端口 8081:

    nginx['listen_port'] = 8081
    
  2. 保存文件并 重新配置极狐GitLab 以使更改生效。

更改 NGINX 日志的详细程度级别

默认情况下,NGINX 以 error 详细程度级别记录日志。

要更改日志级别:

  1. 编辑 /etc/gitlab/gitlab.rb

    nginx['error_log_level'] = "debug"
    
  2. 保存文件并 重新配置极狐GitLab 以使更改生效。

有关有效日志级别值,请参见 NGINX 文档

设置 Referrer-Policy 头

默认情况下,极狐GitLab 在所有响应上设置 Referrer-Policy 头为 strict-origin-when-cross-origin。此设置使客户端:

  • 为同源请求发送完整的 URL 作为引用。
  • 为跨域请求仅发送源。

要更改此头:

  1. 编辑 /etc/gitlab/gitlab.rb

    nginx['referrer_policy'] = 'same-origin'
    

    要禁用此头并使用客户端的默认设置:

    nginx['referrer_policy'] = false
    
  2. 保存文件并 重新配置极狐GitLab 以使更改生效。

{{< alert type=”warning” >}}

设置为 originno-referrer 会破坏需要完整引用 URL 的极狐GitLab 功能。

{{< /alert >}}

有关更多信息,请参见 Referrer Policy 规范

禁用 Gzip 压缩

默认情况下,极狐GitLab 为超过 10240 字节的文本数据启用 Gzip 压缩。要禁用 Gzip 压缩:

  1. 编辑 /etc/gitlab/gitlab.rb

    nginx['gzip_enabled'] = false
    
  2. 保存文件并 重新配置极狐GitLab 以使更改生效。

{{< alert type=”note” >}}

gzip 设置仅适用于主极狐GitLab 应用,不适用于其他服务。

{{< /alert >}}

禁用代理请求缓冲

要为特定位置禁用请求缓冲:

  1. 编辑 /etc/gitlab/gitlab.rb

    nginx['request_buffering_off_path_regex'] = "/api/v\\d/jobs/\\d+/artifacts$|/import/gitlab_project$|\\.git/git-receive-pack$|\\.git/ssh-receive-pack$|\\.git/ssh-upload-pack$|\\.git/gitlab-lfs/objects|\\.git/info/lfs/objects/batch$"
    
  2. 保存文件并 重新配置极狐GitLab 以使更改生效。
  3. 优雅地重新加载 NGINX 配置:

    sudo gitlab-ctl hup nginx
    

有关 hup 命令的更多信息,请参见 NGINX 文档

配置 robots.txt

要为您的实例配置自定义 robots.txt 文件:

  1. 创建您的自定义 robots.txt 文件并记录其路径。

  2. 编辑 /etc/gitlab/gitlab.rb

    nginx['custom_gitlab_server_config'] = "\nlocation =/robots.txt { alias /path/to/custom/robots.txt; }\n"
    

    /path/to/custom/robots.txt 替换为您的自定义 robots.txt 文件的实际路径。

  3. 保存文件并 重新配置极狐GitLab 以使更改生效。

此配置添加了一个 自定义 NGINX 设置 来服务您的自定义 robots.txt 文件。

在极狐GitLab 服务器块中插入自定义 NGINX 设置

要在极狐GitLab 的 NGINX server 块中添加自定义设置:

  1. 编辑 /etc/gitlab/gitlab.rb

    # 示例:阻止特定存储库的原始文件下载
    nginx['custom_gitlab_server_config'] = "location ^~ /foo-namespace/bar-project/raw/ {\n deny all;\n}\n"
    
  2. 保存文件并 重新配置极狐GitLab 以使更改生效。

这会将定义的字符串插入到 server 块的末尾,位于 /var/opt/gitlab/nginx/conf/gitlab-http.conf 中。

{{< alert type=”warning” >}}

自定义设置可能与您的 gitlab.rb 文件中其他地方定义的设置冲突。

{{< /alert >}}

注意事项

  • 如果您正在添加新的位置,您可能需要包括:

    proxy_cache off;
    proxy_http_version 1.1;
    proxy_pass http://gitlab-workhorse;
    

    如果没有这些,任何子位置可能会返回 404 错误。

  • 您不能添加根 / 位置或 /assets 位置,因为它们已经存在于 gitlab-http.conf 中。

在 NGINX 配置中插入自定义设置

要向 NGINX 配置添加自定义设置:

  1. 编辑 /etc/gitlab/gitlab.rb

    # 示例:包含要扫描以获取其他配置文件的目录
    nginx['custom_nginx_config'] = "include /etc/gitlab/nginx/sites-enabled/*.conf;"
    
  2. 保存文件并 重新配置极狐GitLab 以使更改生效。

这会将定义的字符串插入到 http 块的末尾,位于 /var/opt/gitlab/nginx/conf/nginx.conf 中。

例如,要创建和启用自定义服务器块:

  1. /etc/gitlab/nginx/sites-available 目录中创建自定义服务器块。
  2. 如果不存在,请创建 /etc/gitlab/nginx/sites-enabled 目录。
  3. 要启用自定义服务器块,请创建一个符号链接:

    sudo ln -s /etc/gitlab/nginx/sites-available/example.conf /etc/gitlab/nginx/sites-enabled/example.conf
    
  4. 重新加载 NGINX 配置:

    sudo gitlab-ctl hup nginx
    

    或者,您可以重新启动 NGINX:

    sudo gitlab-ctl restart nginx
    

您可以将服务器块的域名添加为 备选名称 到生成的 Let’s Encrypt SSL 证书。

位于 /etc/gitlab/ 目录中的自定义 NGINX 设置在升级期间和手动执行 sudo gitlab-ctl backup-etc 时备份到 /etc/gitlab/config_backup/

配置自定义错误页面

要修改默认极狐GitLab 错误页面上的文本:

  1. 编辑 /etc/gitlab/gitlab.rb

    nginx['custom_error_pages'] = {
     '404' => {
       'title' => '示例标题',
       'header' => '示例页眉',
       'message' => '示例信息'
     }
    }
    

    此示例修改默认的 404 错误页面。您可以使用此格式用于任何有效的 HTTP 错误代码,如 404 或 502。

  2. 保存文件并 重新配置极狐GitLab 以使更改生效。

404 错误页面的结果如下所示:

自定义 404 错误页面

使用现有的 Passenger 和 NGINX 安装

您可以使用现有的 Passenger 和 NGINX 安装托管极狐GitLab,并仍然使用 Linux 软件包进行更新和安装。

如果您禁用了 NGINX,则无法访问 Linux 软件包安装中包含的其他服务,例如 Mattermost,除非您手动将它们添加到 nginx.conf 中。

配置

要使用现有的 Passenger 和 NGINX 安装设置极狐GitLab:

  1. 编辑 /etc/gitlab/gitlab.rb

    # 定义外部 URL
    external_url 'http://git.example.com'
    
    # 禁用内置的 NGINX
    nginx['enable'] = false
    
    # 禁用内置的 Puma
    puma['enable'] = false
    
    # 设置内部 API URL
    gitlab_rails['internal_api_url'] = 'http://git.example.com'
    
    # 定义 Web 服务器进程用户(ubuntu/nginx)
    web_server['external_users'] = ['www-data']
    
  2. 保存文件并 重新配置极狐GitLab 以使更改生效。

配置虚拟主机(服务器块)

在您的自定义 Passenger/NGINX 安装中:

  1. 创建一个新的网站配置文件,内容如下:

    upstream gitlab-workhorse {
     server unix://var/opt/gitlab/gitlab-workhorse/sockets/socket fail_timeout=0;
    }
    
    server {
     listen *:80;
     server_name git.example.com;
     server_tokens off;
     root /opt/gitlab/embedded/service/gitlab-rails/public;
    
     client_max_body_size 250m;
    
     access_log  /var/log/gitlab/nginx/gitlab_access.log;
     error_log   /var/log/gitlab/nginx/gitlab_error.log;
    
     # 确保 Passenger 使用捆绑的 Ruby 版本
     passenger_ruby /opt/gitlab/embedded/bin/ruby;
    
     # 正确设置 $PATH 变量以包含捆绑的可执行文件
     passenger_env_var PATH "/opt/gitlab/bin:/opt/gitlab/embedded/bin:/usr/local/bin:/usr/bin:/bin";
    
     # 确保 Passenger 作为正确的用户和组运行以防止权限问题
     passenger_user git;
     passenger_group git;
    
     # 启用 Passenger 并始终保持至少一个实例运行
     passenger_enabled on;
     passenger_min_instances 1;
    
     location ~ ^/[\w\.-]+/[\w\.-]+/(info/refs|git-upload-pack|git-receive-pack)$ {
       # 'Error' 418 是一个重用 @gitlab-workhorse 块的技巧
       error_page 418 = @gitlab-workhorse;
       return 418;
     }
    
     location ~ ^/[\w\.-]+/[\w\.-]+/repository/archive {
       # 'Error' 418 是一个重用 @gitlab-workhorse 块的技巧
       error_page 418 = @gitlab-workhorse;
       return 418;
     }
    
     location ~ ^/api/v3/projects/.*/repository/archive {
       # 'Error' 418 是一个重用 @gitlab-workhorse 块的技巧
       error_page 418 = @gitlab-workhorse;
       return 418;
     }
    
     # 生成的产物应该提交到此位置
     location ~ ^/[\w\.-]+/[\w\.-]+/builds/download {
         client_max_body_size 0;
         # 'Error' 418 是一个重用 @gitlab-workhorse 块的技巧
         error_page 418 = @gitlab-workhorse;
         return 418;
     }
    
     # 生成的产物应该提交到此位置
     location ~ /ci/api/v1/builds/[0-9]+/artifacts {
         client_max_body_size 0;
         # 'Error' 418 是一个重用 @gitlab-workhorse 块的技巧
         error_page 418 = @gitlab-workhorse;
         return 418;
     }
    
     # 生成的产物应该提交到此位置
     location ~ /api/v4/jobs/[0-9]+/artifacts {
         client_max_body_size 0;
         # 'Error' 418 是一个重用 @gitlab-workhorse 块的技巧
         error_page 418 = @gitlab-workhorse;
         return 418;
     }
    
    
     # 对 HTTP/1.0 到 HTTP/1.1 的协议升级,我们需要提供 Host 头,如果它缺失
     if ($http_host = "") {
     # 使用 server_name 中定义的值之一
       set $http_host_with_default "git.example.com";
     }
    
     if ($http_host != "") {
       set $http_host_with_default $http_host;
     }
    
     location @gitlab-workhorse {
    
       ## https://github.com/gitlabhq/gitlabhq/issues/694
       ## 有些请求需要超过 30 秒。
       proxy_read_timeout      3600;
       proxy_connect_timeout   300;
       proxy_redirect          off;
    
       # 不要缓冲 Git HTTP 响应
       proxy_buffering off;
    
       proxy_set_header    Host                $http_host_with_default;
       proxy_set_header    X-Real-IP           $remote_addr;
       proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
       proxy_set_header    X-Forwarded-Proto   $scheme;
    
       proxy_http_version 1.1;
       proxy_pass http://gitlab-workhorse;
    
       ## 以下设置仅适用于 NGINX 1.7.11 或更新版本
       #
       ## 按原样将分块请求体传递给 gitlab-workhorse
       # proxy_request_buffering off;
       # proxy_http_version 1.1;
     }
    
     ## 根据 rails 指南启用 gzip 压缩:
     ## http://guides.rubyonrails.org/asset_pipeline.html#gzip-compression
     ## 警告:如果您使用相对 URL,请删除下面的块
     ## 请参阅 config/application.rb 下的 "Relative url support" 以获取其他需要更改的文件列表,以支持相对 URL
     location ~ ^/(assets)/ {
       root /opt/gitlab/embedded/service/gitlab-rails/public;
       gzip_static on; # 服务预压缩版本
       expires max;
       add_header Cache-Control public;
     }
    
     error_page 502 /502.html;
    }
    

    git.example.com 替换为您的服务器 URL。

如果您收到 403 Forbidden 错误,请确保在 /etc/nginx/nginx.conf 中启用了 Passenger:

  1. 取消注释此行:

    # include /etc/nginx/passenger.conf;
    
  2. 重新加载 NGINX 配置:

    sudo service nginx reload
    

配置 NGINX 状态监控

默认情况下,极狐GitLab 在 127.0.0.1:8060/nginx_status 配置了一个 NGINX 健康检查端点来监控您的 NGINX 服务器状态。

端点显示以下信息:

Active connections: 1
server accepts handled requests
18 18 36
Reading: 0 Writing: 1 Waiting: 0
  • 活动连接:总打开连接数。
  • 三个数字显示:
    • 所有接受的连接。
    • 所有处理的连接。
    • 处理的请求总数。
  • 阅读:NGINX 读取请求头。
  • 写入:NGINX 读取请求体、处理请求或向客户端写入响应。
  • 等待:保持连接。此数字取决于 keepalive_timeout 指令。

配置 NGINX 状态选项

要配置 NGINX 状态选项:

  1. 编辑 /etc/gitlab/gitlab.rb

    nginx['status'] = {
     "listen_addresses" => ["127.0.0.1"],
     "fqdn" => "dev.example.com",
     "port" => 9999,
     "options" => {
       "access_log" => "on", # 禁用统计的日志
       "allow" => "127.0.0.1", # 仅允许本地访问
       "deny" => "all" # 拒绝其他人的访问
     }
    }
    

    要禁用 NGINX 状态端点:

    nginx['status'] = {
     'enable' => false
    }
    
  2. 保存文件并 重新配置极狐GitLab 以使更改生效。

使用 VTS 模块配置高级指标

极狐GitLab 包含 NGINX VTS(虚拟主机流量状态)模块,以提供额外的性能指标,包括延迟分位数。

在启用 VTS 模块的直方图桶之前,请考虑以下影响:

  • 增加内存使用以存储指标数据。影响随虚拟主机数量和流量量增加而增加。
  • 在每个请求上计算直方图指标会消耗少量 CPU。
  • 如果您在 Prometheus 中收集这些指标,则需要额外的存储。

对于高流量安装,请在启用这些指标后监控系统资源,以确保性能保持在可接受的范围内。

要启用高级延迟指标:

  1. 创建自定义 NGINX 配置文件:

    sudo mkdir -p /etc/gitlab/nginx/conf.d/
    sudo vim /etc/gitlab/nginx/conf.d/vts-custom.conf
    
  2. 添加这些设置以启用直方图桶和过滤:

    vhost_traffic_status_histogram_buckets 0.005 0.01 0.05 0.1 0.25 0.5 1 2.5 5 10;
    vhost_traffic_status_filter_by_host on;
    vhost_traffic_status_filter on;
    vhost_traffic_status_filter_by_set_key $server_name server::*;
    
  3. 要配置极狐GitLab 以包含您的自定义设置,请将以下内容添加到 /etc/gitlab/gitlab.rb

    nginx['custom_nginx_config'] = "include /etc/gitlab/nginx/conf.d/vts-custom.conf;"
    
  4. 重新配置并重启 NGINX:

    sudo gitlab-ctl reconfigure
    sudo gitlab-ctl restart nginx
    

启用这些设置后,您可以使用 Prometheus 查询监控各种延迟指标:

# 平均响应时间
rate(nginx_vts_server_request_seconds_total[5m]) / rate(nginx_vts_server_requests_total{code=~"2xx|3xx|4xx|5xx"}[5m])

# P90 延迟
histogram_quantile(0.90, rate(nginx_vts_server_request_duration_seconds_bucket[5m]))

# P99 延迟
histogram_quantile(0.99, rate(nginx_vts_server_request_duration_seconds_bucket[5m]))

# 平均上游响应时间
rate(nginx_vts_upstream_response_seconds_total[5m]) / rate(nginx_vts_upstream_requests_total{code=~"2xx|3xx|4xx|5xx"}[5m])

# P90 上游延迟
histogram_quantile(0.90, rate(nginx_vts_upstream_response_duration_seconds_bucket[5m]))

# P99 上游延迟
histogram_quantile(0.99, rate(nginx_vts_upstream_response_duration_seconds_bucket[5m]))

对于极狐GitLab Workhorse 特定的指标,您可以使用:

# 极狐GitLab Workhorse 的 90th 百分位上游延迟
histogram_quantile(0.90, rate(nginx_vts_upstream_response_duration_seconds_bucket{upstream="gitlab-workhorse"}[5m]))

# 极狐GitLab Workhorse 的平均上游响应时间
rate(nginx_vts_upstream_response_seconds_total{upstream="gitlab-workhorse"}[5m]) /
rate(nginx_vts_upstream_requests_total{upstream="gitlab-workhorse",code=~"2xx|3xx|4xx|5xx"}[5m])

配置上传的用户权限

为了确保用户上传可访问,请将您的 NGINX 用户(通常是 www-data)添加到 gitlab-www 组:

sudo usermod -aG gitlab-www www-data

模板

配置文件与捆绑的极狐GitLab NGINX 配置类似,具有以下差异:

  • 使用 Passenger 配置而不是 Puma。
  • 默认情况下不启用 HTTPS,但您可以启用它。

在更改 NGINX 配置后:

  • 对于基于 Debian 的系统,重启 NGINX:

    sudo service nginx restart
    
  • 对于其他系统,请参考您的操作系统文档以获取重启 NGINX 的正确命令。