编辑
2024-08-12
网络技术-内网穿透
00
请注意,本文编写于 605 天前,最后修改于 0 天前,其中某些信息可能已经过时。

目录

gitlab下载地址
这里我安装的版本是
安装教程
在192.168.200.100上安装前置依赖
安装gitlab
配置gitlab(这步还是比较关键的,细心点)
frp下载
frp配置
frp服务端配置(frps.ini)
上传frp到云服务器上并配置,启动
frp客户端配置(frpc.ini)
上传frp到本地虚机上配置,启动
配置域名解析、nginx等
域名解析到云服务器IP地址
云服务器nginx配置
最终效果
登录页
首页
项目页

GitLab 部署在内网环境时,无法直接从公网访问。本文结合 FRP 内网穿透工具与 Nginx 反向代理,提供一套完整的 GitLab 公网访问配置方案。核心内容包括:GitLab CE 16.3.0 安装与前置依赖配置、external_url 公网域名修改(gitlab.odboy.cn)与本地 hosts 映射、FRP 服务端(云服务器)与客户端(内网 GitLab 主机)配置(bind_port=7000vhost_http_port=7010、token 认证)、云服务器 Nginx 配置(proxy_pass http://127.0.0.1:7010)、域名解析(A 记录指向云服务器公网 IP),以及最终的访问验证。

本文适用于需要将内网 GitLab 暴露到公网访问的运维开发人员。

gitlab下载地址

text
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7

这里我安装的版本是

text
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-16.3.0-ce.0.el7.x86_64.rpm

安装教程

首先,把安装包上传到内网的Linux虚拟机上,这里我的ip地址假如是192.168.200.100

10005.png 10006.png

在192.168.200.100上安装前置依赖

shell
yum install policycoreutils-python -y

10007.png

安装gitlab

shell
# 出现狐狸的脑阔就说明安装好了 rpm -i gitlab-ce-16.3.0-ce.0.el7.x86_64.rpm # 默认密码 cat /etc/gitlab/initial_root_password |grep Password

10008.png

配置gitlab(这步还是比较关键的,细心点)

shell
vi /etc/gitlab/gitlab.rb # 找到配置项"external_url", 将external_url修改为自己的公网域名,我的是gitlab.odboy.cn # -------- wq!保存退出 ---- external_url 'http://gitlab.odboy.cn' # 配置linux主机,即gitlab服务所在的主机上的host(vi /etc/hosts) vi /etc/hosts # -------- wq!保存退出 ---- 192.168.200.100 gitlab.odboy.cn # 重新配置 gitlab-ctl reconfigure # 重启 gitlab-ctl restart

frp下载

shell
# github https://github.com/fatedier/frp/releases/tag/v0.51.3 # 代理加速(其他架构的同理),https://ghfast.top/[github文件地址] https://ghfast.top/https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz

frp配置

text
frp包需要提前上传到云服务器和本地的虚机上

frp服务端配置(frps.ini)

云服务器(139.220.160.31)需要安装nginx,同时需要拥有自己的域名(gitlab.odboy.cn)

text
[common] # 监听地址,默认0.0.0.0就行 bind_addr = 0.0.0.0 # frps与frpc交互用的端口,记得打开防火墙,或者放行安全组 bind_port = 7000 # 设置token, 用于加密的token 可以使用强密码生成器(http://www.wetools.com/password-generator)生成一个64位强密码 token = 3dPE6m7uhYDa9IZ988pKVMs5rxBoft3Q2CRgTqenyWzv8OJ56i7N0c44GX0F4Ak1 # 日志路径 log_file = ./frps.log # 日志级别:trace(追踪), debug(调试), info(信息), warn(警告), error(错误) log_level = info # 日志保存天数 log_max_days = 3 # 连接池数量,如果有很多链接最好弄高点,默认5 max_pool_count = 30 # HTTP协议 # 监听http协议的端口,可以与bind_port相同 vhost_http_port = 7010 # 监听https协议的端口,可以与bind_port相同 vhost_https_port = 7011 # http协议超时时间(秒) vhost_http_timeout = 60

上传frp到云服务器上并配置,启动

shell
tar -xvf frp_0.51.3_linux_amd64.tar.gz cd frp_0.51.3_linux_amd64 vi frps.ini nohup ./frps -c ./frps.ini > /dev/null 2>&1 &

10009.png

frp客户端配置(frpc.ini)

text
[common] # 服务器的公网ip,网址也行 server_addr = 139.220.160.31 # frps与frpc交互用的端口,记得打开防火墙,或者放行安全组 server_port = 7000 # 设置token, 用于加密的token 可以使用强密码生成器(http://www.wetools.com/password-generator)生成一个64位强密码 token = 3dPE6m7uhYDa9IZ988pKVMs5rxBoft3Q2CRgTqenyWzv8OJ56i7N0c44GX0F4Ak1 # 日志路径 log_file = ./frpc.log # 日志级别:trace(追踪), debug(调试), info(信息), warn(警告), error(错误) log_level = info # 日志保存天数 log_max_days = 3 [server-gitlab] type = http local_port = 80 # 本地做了host映射 custom_domains = gitlab.odboy.cn

上传frp到本地虚机上配置,启动

shell
tar -xvf frp_0.51.3_linux_amd64.tar.gz cd frp_0.51.3_linux_amd64 vi frpc.ini nohup ./frpc -c ./frpc.ini > /dev/null 2>&1 &

10010.png

配置域名解析、nginx等

域名解析到云服务器IP地址

text
gitlab.odboy.cn A记录 139.220.160.31

云服务器nginx配置

text
server { listen 80; server_name gitlab.odboy.cn; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; # 因为服务端配置了v_host_port = 7010, 该端口访问直接tcp到客户端的对应内网服务 proxy_pass http://127.0.0.1:7010; } }

最终效果

登录页

10011.png

首页

10012.png

项目页

10013.png

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Odboy

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC 4.0 BY-SA 许可协议。转载请注明出处!