/etc/sysconfig/network-scripts/ifcfg-ens33),修改以下参数:BOOTPROTO=static(静态IP)、ONBOOT=yes(开机自启)、IPADDR(服务器IP)、NETMASK(子网掩码)、GATEWAY(网关)、DNS1/DNS2(DNS服务器,如8.8.8.8)。修改后重启网络服务:sudo systemctl restart network。hostnamectl设置易识别的主机名,便于后续配置external_url:sudo hostnamectl set-hostname gitlab.example.com(替换为你的域名或主机名)。firewall-cmd开放并永久保存:sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --reload
sudo setsebool -P httpd_can_network_connect 1。external_url:编辑/etc/gitlab/gitlab.rb,设置GitLab的访问地址(域名或IP),决定Web界面和API的访问路径:external_url 'http://gitlab.example.com'(HTTP)或external_url 'https://gitlab.example.com'(HTTPS)。gitlab.rb中指定SSH主机名和端口(避免与系统SSH端口冲突):gitlab_rails['gitlab_ssh_host'] = 'gitlab.example.com' # SSH访问域名
gitlab_rails['gitlab_shell_ssh_port'] = 10022 # SSH端口(默认22需修改以避免冲突)
重启GitLab使配置生效:sudo gitlab-ctl reconfigure && sudo gitlab-ctl restart。若GitLab部署在内网,需通过公网服务器(如Nginx)代理访问,步骤如下:
gitlab.rb,关闭自带Nginx,设置监听端口:nginx['enable'] = false # 禁用自带Nginx
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "0.0.0.0:10080" # Workhorse监听端口
gitlab_rails['trusted_proxies'] = ['公网服务器内网IP'] # 信任的代理服务器IP
gitlab_rails['gitlab_ssh_host'] = 'gitlab.example.com'
gitlab_rails['gitlab_shell_ssh_port'] = 10022
重启GitLab:sudo gitlab-ctl reconfigure && sudo gitlab-ctl restart。server {
listen 443 ssl;
server_name gitlab.example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://内网GitLab服务器IP:10080;
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-Ssl on; # 关键:避免登录422错误
}
}
nginx.conf的stream模块中添加:stream {
upstream gitlab_ssh {
server 内网GitLab服务器IP:22;
}
server {
listen 10022;
proxy_pass gitlab_ssh;
}
}
sudo systemctl restart nginx。sudo yum install epel-release
sudo yum install certbot python2-certbot-nginx
sudo certbot --nginx -d gitlab.example.com -d www.gitlab.example.com
Certbot会自动配置Nginx并创建证书(路径:/etc/letsencrypt/live/gitlab.example.com/)。gitlab.rb,指定证书路径并启用HTTPS:external_url 'https://gitlab.example.com'
nginx['ssl_certificate'] = "/etc/letsencrypt/live/gitlab.example.com/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab.example.com/privkey.pem"
nginx['redirect_http_to_https'] = true # 自动跳转HTTPS
重启GitLab:sudo gitlab-ctl reconfigure && sudo gitlab-ctl restart。http://gitlab.example.com(或HTTPS),检查是否能正常访问Web界面。git clone ssh://git@gitlab.example.com:10022/username/repo.git(替换为实际项目路径),验证SSH端口是否可达。git clone http://gitlab.example.com/username/repo.git,验证HTTP访问是否正常。以上技巧覆盖了CentOS环境下GitLab网络配置的核心环节,从基础网络到高级反向隧道、SSL加密,确保GitLab在不同场景下都能稳定、安全地提供服务。