一直很期待远程在家办公,可是如今真实施起来,确实不是那么适应,甚至有些无聊。由于涉及到团队协做,时间上也没有作到自由安排。在这段时间的远程办公中,涉及到的主要问题就是和前端开发人员的对接上,咱们的服务端程序部署在阿里云上,由于项目仍然处于开发阶段,接口上咱们也须要常常调整,频繁发布更新特别影响效率,因此想到了内网穿透的方案,采用ngrok搭建了一套内网转发服务,同时也移植构建了一版http报表系统。Ngrok官网地址:https://ngrok.com ngrok官网提供的有免费服务,可是速度特别感人。前端
前提条件:域名、主机 ,笔者所用主机是阿里云centos8.0,域名也是在阿里云购买。(备注:若是还没有备案,请选择香港或者国外云主机)node
ngrok搭建步骤以下:linux
1.环境安装git
首先安装gcc和git,安装命令以下:github
yum install gcc -y yum install git -y
安装go语言环境,若是不想经过yum安装,能够自行去官网下载,安装到服务器上。安装命令以下:golang
yum install -y mercurial git bzr subversion golang
2.搭建服务web
在搭建服务的过程当中,首先就是制做证书,制做证书命令以下:windows
export NGROK_DOMAIN ="test.com" # 我的域名 openssl genras -out rootCA.key 2048 openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem openssl genrsa -out device.key 2048 openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
复制粘贴运行就行,运行结果以下图所示: 后端
而后下载ngrok源码:centos
git clone https://github.com/inconshreveable/ngrok.git
代码下载完毕以后,用刚才生产的证书替换ngrok的证书,以下所示:
证书替换完毕以后,在ngrok文件夹下,即代码文件夹下输入命令编译服务端代码:
GOOS=linux GOARCH-amd64 make release-server
编译过程较慢,请耐心等待,且有可能会遇到编译失败的状况,从新编译便可。编译完成以后,会在bin目录下生产。服务启动命令是 ngrokd -domain='你的域名'。先不用启动服务端,往下继续编译客户端。客户端能够自行diy,修改ngrok默认服务地址,以下所示:
在第24行,修改defaultServerAddr为配置的域名,端口改成4443。
修改客户端logo,以下所示,在第100行左右修改ngrok为本身的logo文字便可。
完事以后,便可编译生产客户端,编译后的客户端也在bin目录,编译完成以后自行下载到我的电脑。编译命令以下:
GOOS=windows GOARCH=amd64 make release-client
服务端、客户端均编译完毕,可为服务端建立服务便于服务运行,一下为笔者服务配置:
[Unit] Description=ngrok service After=network.target After=syslog.target [Service] Type=simple ExecStart=/new-ngrok/code/ngrok/bin/ngrokd -domain= #我的配置的域名 ExecStop=/bin/kill $MAINPID ExecReload=/bin/kill -USR1 $MAINPID Restart=always [Install] WantedBy=multi-user.target
同时,关闭服务器防火墙,或者自行配置
systemctl stop firewalld
启动服务端,启动客户端,客户端使用方式以下,若是客户端未正确连接,配置下服务器的安全组规则便可,开放对应端口:
而后访问对应的公网地址便可。同时,管理地址是127.0.0.1:4040,界面以下:
经过这样的方式,能够清楚的查看到前端每次请求具体参数、返回信息,便于在对接过程当中可以很快的排查问题。
内网转发服务搭建完毕,下一步就是集成到http报表,报表首页面以下:
在此感谢SpringLeee,本报表是基于开源项目移植而成,项目地址是https://github.com/SpringLeee/HttpReports
本项目是采用中间件的形式对请求进行统计,且github上此报表是core版本的,与做者沟通做者不打算整进.net framework。由于咱们这边的项目大都是.net framework版本,因此只能本身动手移植到framework,花费了5个多小时成功移植,且针对具体功能进行了部分优化。移植后的版本,采用autofac进行DI。且经过httomodule的方式记录请求,所以在使用方式上,也以中间件的形式,只须要在web.config中注册本httpmodule便可。framework版本代码,以及使用方式,后续整理事后会分享到github。
在远程期间,我是依靠ngrok来解决先后端的对接问题,采用httpreports来对天天的请求进行分析。哪些接口容易报错、哪些接口耗时最长、哪些接口请求频率最高等等。