GitLab系列2 GitLab Workhorse

本文详细介绍了GitLab Workhorse的工作原理及其在GitLab架构中的作用。GitLab Workhorse作为Nginx与Unicorn Web服务器之间的智能代理,主要处理大流量的HTTP请求,如文件上传/下载、Git操作等。它减少了Rails组件的负载,优化了静态资源处理,并实现了权限检查等功能。此外,还探讨了Unix Socket在通信中的应用。
摘要由CSDN通过智能技术生成

GitLab Workhorse

上一回介绍了 GitLab 的基础功能和架构,但还没具体讲解用户的请求是怎么被处理的,只是将各个组件的功能职责介绍了一遍,本节将简单介绍 gitlab-workhorse 的功能


首先回顾一下:GitLab 利用 Nginx 将前端的 http/https 请求代理至 gitlab-workhorse,gitlab-workhorse 再将请求转发至 Unicorn Web 服务器。默认情况下 gitlab-workhorse 与前端之间的通信是使用 unix domain socket 进行的,但也支持 TCP 转发请求;GitLab 使用 Unicorn Web 服务器提供动态网页和 API 接口

1. Nginx 入口

从架构图可以看出,HTTP/HTTPS 请求进入 GitLab 的第一站是 nginx

下载 GitLab-ce 官方源码后,进入 ${gitlab-ce根目录}/lib/support/nginx,打开 gitlab-ssl 可以看到 nginx 的配置


GitLab 默认将 http 请求重定向至 https 请求

## Redirects all HTTP traffic to the HTTPS host
server {
  listen 0.0.0.0:80;
  listen [::]:80 ipv6only=on default_server;
  server_name YOUR_SERVER_FQDN;
  server_tokens off;
  return 301 https://$http_host$request_uri;
  access_log  /var/log/nginx/gitlab_access.log gitlab_ssl_access;
  error_log   /var/log/nginx/gitlab_error.log;
}
复制代码

https 的设置相对比较复杂,这里仅提一个亮点:location: / 下面的 proxy_pass http://gitlab-workhorse; ,说明了 除了某些静态页面,nginx 几乎将所有的 http/https 请求传递给了 gitlab-workhorse 组件处理(使用 unix socket 通信)

Unix Socket 是一种 socket 方式实现的进程间通信功能,它不需要进行复杂的数据打包拆包、校验和计算验证,不需要走网络协议栈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值