温馨提示×

GitLab在Debian上的网络设置如何配置

小樊
44
2025-12-17 05:47:50
栏目: 智能运维

GitLab在Debian上的网络设置指南

一 系统网络与防火墙

  • 设置静态IP(示例为网卡eth0,请按实际网卡名调整)
    • 编辑配置文件:sudo nano /etc/network/interfaces
    • 配置示例:
      auto lo
      iface lo inet loopback
      
      auto eth0
      iface eth0 inet static
          address 192.168.1.100
          netmask 255.255.255.0
          gateway 192.168.1.1
      
    • 配置DNS:sudo nano /etc/resolv.conf
      nameserver 8.8.8.8
      nameserver 8.8.4.4
      
    • 使配置生效:sudo systemctl restart networking
  • 防火墙放行端口(UFW)
    • 开放HTTP/HTTPS:sudo ufw allow 80,443/tcp;sudo ufw reload
    • 如使用云厂商安全组,也需放行80/443入站。

二 GitLab核心网络参数 external_url

  • 编辑配置文件:sudo nano /etc/gitlab/gitlab.rb
  • 设置访问地址(HTTP或HTTPS)
    • HTTP示例:external_url ‘http://192.168.1.100’
    • HTTPS示例:external_url ‘https://git.example.com’
  • 使配置生效:sudo gitlab-ctl reconfigure
  • 说明:修改external_url会触发内部Nginx/Unicorn等组件按新地址重新生成配置。

三 启用HTTPS与证书部署

  • 方式A(推荐)使用Let’s Encrypt自动获取并配置
    • 安装Certbot:sudo apt update && sudo apt install -y certbot python3-certbot-nginx
    • 获取并自动配置证书:sudo certbot --nginx -d git.example.com
    • 同步GitLab为HTTPS:在**/etc/gitlab/gitlab.rb**中设置 external_url ‘https://git.example.com’,再执行 sudo gitlab-ctl reconfigure
  • 方式B 手动放置证书
    • 准备证书与目录:
      sudo mkdir -p /etc/gitlab/ssl
      sudo chmod 700 /etc/gitlab/ssl
      sudo cp git.example.com.key git.example.com.crt /etc/gitlab/ssl/
      
    • 在**/etc/gitlab/gitlab.rb**中指定证书路径:
      external_url 'https://git.example.com'
      nginx['ssl_certificate'] = '/etc/gitlab/ssl/git.example.com.crt'
      nginx['ssl_certificate_key'] = '/etc/gitlab/ssl/git.example.com.key'
      
    • 可选:将所有HTTP重定向到HTTPS
      nginx['redirect_http_to_https'] = true
      
    • 使配置生效:sudo gitlab-ctl reconfigure

四 反向代理与端口定制

  • 使用外部Nginx反向代理(示例)
    • 安装Nginx:sudo apt-get install -y nginx
    • 站点配置示例(/etc/nginx/sites-available/gitlab):
      server {
          listen 80;
          server_name git.example.com;
          location / {
              proxy_pass http://127.0.0.1:8080;
              proxy_set_header Host $host;
              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;
          }
      }
      
    • 启用站点并重启Nginx:sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled && sudo systemctl restart nginx
    • 调整GitLab监听(/etc/gitlab/gitlab.rb):
      external_url 'http://git.example.com'
      nginx['listen_port'] = 80
      nginx['listen_network'] = "0.0.0.0"
      unicorn['port'] = 8080
      
    • 使配置生效:sudo gitlab-ctl reconfigure
  • 变更HTTPS端口示例
    • external_url ‘https://git.example.com:2443’
    • 证书路径按前述方式配置,完成后 sudo gitlab-ctl reconfigure

五 验证与常见问题

  • 连通性验证
    • 本机:curl -I http://127.0.0.1https://git.example.com
    • 外部:浏览器访问配置的域名/IP;如启用HTTPS,确认证书有效(锁标识)
  • 日志排查
    • GitLab:sudo gitlab-ctl tail(Nginx、Rails 等日志)
    • Nginx:sudo journalctl -u nginx -f
  • 常见问题
    • 端口被占用:ss -tulpen | grep 80/443/8080;必要时调整 unicorn/nginx 端口后 reconfigure
    • 证书权限:/etc/gitlab/ssl 权限应为700,证书文件600
    • 反向代理后CSRF或重定向异常:检查 X-Forwarded-Proto/X-Real-IP 等代理头是否正确设置,必要时在 gitlab.rb 中调整 nginx[‘proxy_set_headers’]trusted_proxies/real_ip 相关项。

0