陕西哪些公司做企业网站,六安seo曝光行者seo,嘉兴网站seo服务,美妆网站建设背景说明
https://blog.csdn.net/GodDavide/article/details/139182475 上文说到: 我已经用docker搭好了gitlab-ce服务#xff0c;但我是部署在自己的家庭nas-极空间z4pro里的#xff0c;属于内网环境。 另外我有一台阿里云服务器#xff0c;做跳板机。 我有一个阿里的域名…背景说明
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_CONFIGexternal_url http://git.****.cn \--publish 15443:443 --publish 15080:80 --publish 15022:22 \# ....以下省略可以看上一篇文章# https://blog.csdn.net/GodDavide/article/details/139182475然后如上我的80端口映射1508022端口映射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成功用公网的ip15222 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解决 1nginx 1.9以后才有stream模块需要升级但现在谁还用这么老的版本~ 2nginx安装的时候并没有安装stream模块可以安装nginx stream模块或者安装全部模块。
yum -y install nginx-all-modules.noarch再次 nginx -s reload成功。
此时git clone ssh:// 使用15922 端口发现可以clone成功了。 最后再将gitlab.rb中的15022改成15922 即可正确显示地址了。或者改一下穿透端口和Nginx配置转发端口都可以。 ps:注意一下阿里云服务器实例的网络安全组一定要把你需要的端口打开哦~