NGINX settings

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

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

服务专用的 NGINX 设置#

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

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

使用 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 中添加以下设置:

ruby
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 软件包安装会设置:

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

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

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

要覆盖默认头:

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

    ruby
    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 列表中:

ruby
# 每个地址都作为 '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

    ruby
    # 启用 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 中设置:

    ruby
    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 中设置:

    ruby
    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 地址登录。

    ruby
    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

    ruby
    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

    ruby
    # 监听所有 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:

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

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

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

要更改日志级别:

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

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

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

设置 Referrer-Policy 头#

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

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

要更改此头:

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

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

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

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

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

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

禁用 Gzip 压缩#

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

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

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

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

禁用代理请求缓冲#

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

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

    ruby
    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 配置:

    shell
    sudo gitlab-ctl hup nginx

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

配置 robots.txt#

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

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

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

    ruby
    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

    ruby
    # 示例:阻止特定存储库的原始文件下载 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 中。

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

注意事项#

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

    conf
    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

    ruby
    # 示例:包含要扫描以获取其他配置文件的目录 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. 要启用自定义服务器块,请创建一个符号链接:

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

    shell
    sudo gitlab-ctl hup nginx

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

    shell
    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

    ruby
    1nginx['custom_error_pages'] = { 2 '404' => { 3 'title' => '示例标题', 4 'header' => '示例页眉', 5 'message' => '示例信息' 6 } 7}

    此示例修改默认的 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

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

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

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

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

    plaintext
    1upstream gitlab-workhorse { 2 server unix://var/opt/gitlab/gitlab-workhorse/sockets/socket fail_timeout=0; 3} 4 5server { 6 listen *:80; 7 server_name git.example.com; 8 server_tokens off; 9 root /opt/gitlab/embedded/service/gitlab-rails/public; 10 11 client_max_body_size 250m; 12 13 access_log /var/log/gitlab/nginx/gitlab_access.log; 14 error_log /var/log/gitlab/nginx/gitlab_error.log; 15 16 # 确保 Passenger 使用捆绑的 Ruby 版本 17 passenger_ruby /opt/gitlab/embedded/bin/ruby; 18 19 # 正确设置 $PATH 变量以包含捆绑的可执行文件 20 passenger_env_var PATH "/opt/gitlab/bin:/opt/gitlab/embedded/bin:/usr/local/bin:/usr/bin:/bin"; 21 22 # 确保 Passenger 作为正确的用户和组运行以防止权限问题 23 passenger_user git; 24 passenger_group git; 25 26 # 启用 Passenger 并始终保持至少一个实例运行 27 passenger_enabled on; 28 passenger_min_instances 1; 29 30 location ~ ^/[\w\.-]+/[\w\.-]+/(info/refs|git-upload-pack|git-receive-pack)$ { 31 # 'Error' 418 是一个重用 @gitlab-workhorse 块的技巧 32 error_page 418 = @gitlab-workhorse; 33 return 418; 34 } 35 36 location ~ ^/[\w\.-]+/[\w\.-]+/repository/archive { 37 # 'Error' 418 是一个重用 @gitlab-workhorse 块的技巧 38 error_page 418 = @gitlab-workhorse; 39 return 418; 40 } 41 42 location ~ ^/api/v3/projects/.*/repository/archive { 43 # 'Error' 418 是一个重用 @gitlab-workhorse 块的技巧 44 error_page 418 = @gitlab-workhorse; 45 return 418; 46 } 47 48 # 生成的产物应该提交到此位置 49 location ~ ^/[\w\.-]+/[\w\.-]+/builds/download { 50 client_max_body_size 0; 51 # 'Error' 418 是一个重用 @gitlab-workhorse 块的技巧 52 error_page 418 = @gitlab-workhorse; 53 return 418; 54 } 55 56 # 生成的产物应该提交到此位置 57 location ~ /ci/api/v1/builds/[0-9]+/artifacts { 58 client_max_body_size 0; 59 # 'Error' 418 是一个重用 @gitlab-workhorse 块的技巧 60 error_page 418 = @gitlab-workhorse; 61 return 418; 62 } 63 64 # 生成的产物应该提交到此位置 65 location ~ /api/v4/jobs/[0-9]+/artifacts { 66 client_max_body_size 0; 67 # 'Error' 418 是一个重用 @gitlab-workhorse 块的技巧 68 error_page 418 = @gitlab-workhorse; 69 return 418; 70 } 71 72 73 # 对 HTTP/1.0 到 HTTP/1.1 的协议升级,我们需要提供 Host 头,如果它缺失 74 if ($http_host = "") { 75 # 使用 server_name 中定义的值之一 76 set $http_host_with_default "git.example.com"; 77 } 78 79 if ($http_host != "") { 80 set $http_host_with_default $http_host; 81 } 82 83 location @gitlab-workhorse { 84 85 ## https://github.com/gitlabhq/gitlabhq/issues/694 86 ## 有些请求需要超过 30 秒。 87 proxy_read_timeout 3600; 88 proxy_connect_timeout 300; 89 proxy_redirect off; 90 91 # 不要缓冲 Git HTTP 响应 92 proxy_buffering off; 93 94 proxy_set_header Host $http_host_with_default; 95 proxy_set_header X-Real-IP $remote_addr; 96 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 97 proxy_set_header X-Forwarded-Proto $scheme; 98 99 proxy_http_version 1.1; 100 proxy_pass http://gitlab-workhorse; 101 102 ## 以下设置仅适用于 NGINX 1.7.11 或更新版本 103 # 104 ## 按原样将分块请求体传递给 gitlab-workhorse 105 # proxy_request_buffering off; 106 # proxy_http_version 1.1; 107 } 108 109 ## 根据 rails 指南启用 gzip 压缩: 110 ## http://guides.rubyonrails.org/asset_pipeline.html#gzip-compression 111 ## 警告:如果您使用相对 URL,请删除下面的块 112 ## 请参阅 config/application.rb 下的 "Relative url support" 以获取其他需要更改的文件列表,以支持相对 URL 113 location ~ ^/(assets)/ { 114 root /opt/gitlab/embedded/service/gitlab-rails/public; 115 gzip_static on; # 服务预压缩版本 116 expires max; 117 add_header Cache-Control public; 118 } 119 120 error_page 502 /502.html; 121}

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

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

  1. 取消注释此行:

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

    shell
    sudo service nginx reload

配置 NGINX 状态监控#

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

端点显示以下信息:

plaintext
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

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

    要禁用 NGINX 状态端点:

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

使用 VTS 模块配置高级指标#

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

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

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

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

要启用高级延迟指标:

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

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

    nginx
    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

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

    shell
    sudo gitlab-ctl reconfigure sudo gitlab-ctl restart nginx

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

plaintext
1# 平均响应时间 2rate(nginx_vts_server_request_seconds_total[5m]) / rate(nginx_vts_server_requests_total{code=~"2xx|3xx|4xx|5xx"}[5m]) 3 4# P90 延迟 5histogram_quantile(0.90, rate(nginx_vts_server_request_duration_seconds_bucket[5m])) 6 7# P99 延迟 8histogram_quantile(0.99, rate(nginx_vts_server_request_duration_seconds_bucket[5m])) 9 10# 平均上游响应时间 11rate(nginx_vts_upstream_response_seconds_total[5m]) / rate(nginx_vts_upstream_requests_total{code=~"2xx|3xx|4xx|5xx"}[5m]) 12 13# P90 上游延迟 14histogram_quantile(0.90, rate(nginx_vts_upstream_response_duration_seconds_bucket[5m])) 15 16# P99 上游延迟 17histogram_quantile(0.99, rate(nginx_vts_upstream_response_duration_seconds_bucket[5m]))

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

plaintext
1# 极狐GitLab Workhorse 的 90th 百分位上游延迟 2histogram_quantile(0.90, rate(nginx_vts_upstream_response_duration_seconds_bucket{upstream="gitlab-workhorse"}[5m])) 3 4# 极狐GitLab Workhorse 的平均上游响应时间 5rate(nginx_vts_upstream_response_seconds_total{upstream="gitlab-workhorse"}[5m]) / 6rate(nginx_vts_upstream_requests_total{upstream="gitlab-workhorse",code=~"2xx|3xx|4xx|5xx"}[5m])

配置上传的用户权限#

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

shell
sudo usermod -aG gitlab-www www-data

模板#

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

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

在更改 NGINX 配置后:

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

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