当前位置: 首页 > news >正文

内网(极空间)搭建gitlab跳板机转发端口及域名配置

背景说明

https://blog.csdn.net/GodDavide/article/details/139182475
上文说到:
我已经用docker搭好了gitlab-ce服务,但我是部署在自己的家庭nas-极空间z4pro里的,属于内网环境。
另外我有一台阿里云服务器,做跳板机。
我有一个阿里的域名,解析到我的阿里云跳板机上。

问题还原

如上,我需要用域名访问我的gitlab-ce服务,在docker run的时候,配置了hostname和external_url:
当然:也可通过修改gitlab.rb文件实现【见上文】。

docker run --detach \--hostname git.****.cn \--env GITLAB_OMNIBUS_CONFIG="external_url 'http://git.****.cn'" \--publish 15443:443 --publish 15080:80 --publish 15022:22  \# ....以下省略,可以看上一篇文章# https://blog.csdn.net/GodDavide/article/details/139182475

然后,如上,我的80端口,映射15080,22端口映射15022
则就需要修改gitlab.rb 将gitlab_rails[‘gitlab_shell_ssh_port’]修改为15022
在这里插入图片描述
则此时,我的gitlab上 clone代码的地址,显示的就是正确的地址:
在这里插入图片描述
然后,我通过ssh命令,做一个端口转发,以实现内网穿透,将服务端口链接到跳板机上。这个以后再详细介绍。
然后穿透到阿里云服务器跳板机的端口,只能内网访问,需要用nginx做个转发,才能用公网ip进行访问。
到此为止,我仅仅只配置了80的映射端口15080。服务是可以通过域名访问了,
但是,我通过ssh克隆,确一直clone 失败~
ps:已经将ssh-key添加进项目秘钥库里了~
在这里插入图片描述

问题排查解决

首先想到的就是 git clone是通过ssh的22端口进行下载的,那就需要打通22端口,则又配置22端口的nginx转发。
在这里插入图片描述
发现,并不能实现
然后,回头尝试用内网地址+15022 clone,成功,用公网的ip+15222 clone失败,那就是定位到时nginx转发的问题了
然后,就考虑到22端口转发应该有特殊配置,这才发现,22端口需要处理TCP/UDP 流量。而普通的配置并不能处理TCP/UDP 流量。需要用stream模块,具体配置如下:

stream {upstream gitlab_ssh {server 127.0.0.1:15022;}server {listen 15922; # 不能和其他端口冲突proxy_pass gitlab_ssh;proxy_connect_timeout 1d;proxy_timeout 1d;}
}

在这里插入图片描述
此时 nginx -s reload 报错:

nginx: [emerg] "stream" directive is not allowed here in /etc/nginx/conf.d/gitlab.conf:28

解决:
1:nginx 1.9以后才有stream模块,需要升级,但现在谁还用这么老的版本~
2:nginx安装的时候,并没有安装stream模块,可以安装nginx stream模块,或者安装全部模块。

yum -y install nginx-all-modules.noarch

再次 nginx -s reload,成功。

此时git clone ssh:// 使用15922 端口,发现可以clone成功了。
最后再将gitlab.rb中的15022改成15922 即可正确显示地址了。或者改一下穿透端口和Nginx配置转发端口都可以。
ps:注意一下;阿里云服务器实例的网络安全组,一定要把你需要的端口打开哦~

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • mipi-csi笔记
  • python改进婚礼礼金请帖
  • AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.05.10-2024.05.20
  • 行为型设计模式之模板模式
  • 网络安全(黑客)—-2024自学手册
  • 质量人,你还在等什么?快来六西格玛培训公司充电吧!——张驰咨询
  • 掌握Adobe XD:为自学者准备的软件学习秘籍
  • 护眼灯到底有用吗?引发护眼台灯危害的四大原因曝光!
  • Python装饰器的应用
  • 远程户外监控组网方案,工业4G路由器ZR2000
  • git上新down下来的项目,前端启动报错npm ERR! code 1 npm ERR! path E:\code\vuehr\node_modul
  • Flutter 中的 Offstage 小部件:全面指南
  • Nginx实现负载均衡与故障检查自动切换
  • 【前端三剑客之JS】详解JS
  • 【Unity AR开发插件】四、制作热更数据-AR图片识别场景
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • @jsonView过滤属性
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Angular 4.x 动态创建组件
  • E-HPC支持多队列管理和自动伸缩
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Javascript设计模式学习之Observer(观察者)模式
  • JavaWeb(学习笔记二)
  • k8s如何管理Pod
  • Median of Two Sorted Arrays
  • Odoo domain写法及运用
  • Redis 中的布隆过滤器
  • Shell编程
  • WePY 在小程序性能调优上做出的探究
  • 初识MongoDB分片
  • 浮现式设计
  • 关于Java中分层中遇到的一些问题
  • 缓存与缓冲
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 批量截取pdf文件
  • 前言-如何学习区块链
  • 一份游戏开发学习路线
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 正则表达式-基础知识Review
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • # include “ “ 和 # include < >两者的区别
  • # 数仓建模:如何构建主题宽表模型?
  • $$$$GB2312-80区位编码表$$$$
  • (7)摄像机和云台
  • (Note)C++中的继承方式
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (笔试题)合法字符串
  • (多级缓存)缓存同步
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全