Ubuntu 下 GitLab 网络配置技巧
一 基础网络与防火墙
sudo hostnamectl set-hostname gitlab.example.com,并确保域名 DNS 解析指向服务器 IP。sudo ufw allow 80,443,22/tcp && sudo ufw enable;如使用云厂商安全组,也需同步放行。sudo systemctl status ssh),并可用 ss -tlnp | grep -E ':(80|443|22)' 检查端口监听。二 域名与端口映射
external_url 'http://gitlab.example.com'(或带端口/HTTPS 的地址),保存后执行 sudo gitlab-ctl reconfigure 使配置生效。nginx['listen_port'] = 8080,并将外部访问改为 http://gitlab.example.com:8080。三 反向代理与内置 Nginx 协同
nginx['enable'] = false;2) 允许外部 Web 服务用户:web_server['external_users'] = ['www-data'];3) 将外部用户加入 GitLab 组:sudo usermod -aG gitlab-www www-data;4) 配置外部 Nginx,反向代理到 Unix socket:unix:/var/opt/gitlab/gitlab-workhorse/socket,并设置关键请求头(Host、X-Real-IP、X-Forwarded-For、X-Forwarded-Proto);5) 重载 Nginx 与 GitLab。nginx['enable'] = true;2) 设置 nginx['listen_port'] = 8080(或 8443 用于 HTTPS);3) 将 external_url 的端口与之匹配;4) 执行 gitlab-ctl reconfigure。client_max_body_size 0 或较大值(如 500M)。四 HTTPS 与证书部署
sudo mkdir -p /etc/gitlab/ssl && sudo chmod 700 /etc/gitlab/ssl;2) 生成 server.key 与 server.crt;3) 在 gitlab.rb 中设置 external_url 'https://gitlab.example.com',并指定证书路径:nginx['ssl_certificate'] 与 nginx['ssl_certificate_key'];4) 可选:nginx['redirect_http_to_https'] = true;5) 执行 gitlab-ctl reconfigure。sudo apt install -y certbot;2) 获取证书:sudo certbot certonly --standalone -d gitlab.example.com;3) 在 gitlab.rb 中配置证书路径:/etc/letsencrypt/live/gitlab.example.com/fullchain.pem 与 privkey.pem;4) 启用重定向并 gitlab-ctl reconfigure。external_url 协议/端口需一致,避免浏览器与 Git 客户端出现 证书不匹配 或 重定向循环。五 Docker 部署与端口规划
-p 9080:80 -p 9022:22 -p 9443:443(分别对应 HTTP/SSH/HTTPS)。-v /home/docker/gitlab/config:/etc/gitlab -v /home/docker/gitlab/logs:/var/log/gitlab -v /home/docker/gitlab/data:/var/opt/gitlab。六 常见问题快速排查
ss -tlnp)、以及 NAT 转发是否生效。X-Forwarded-Proto、proxy_read_timeout 等;必要时查看 /var/log/gitlab/nginx/*.log。external_url 与代理配置完全一致(协议、域名、端口)。nginx['listen_port'] 或相应服务端口,再 gitlab-ctl reconfigure。gitlab-ctl status、gitlab-ctl tail 快速定位组件故障。