专栏首页codersamNGROK内⽹穿透实现本地微信公众号开发

NGROK内⽹穿透实现本地微信公众号开发

NGROK介绍

  • Ngrok 是一个反向代理,通过在公告网络和本地端口之间建立一个安全的通道。
  • 实现条件必须有一台外网IP的服务器。

安装环境

安装go语言

go语言版本必须是1.1的版本,可以去https://studygolang.com/dl 下载,下载tar.gz之后解压

wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz # 下载go语言
tar -zxvf go1.11.linux-amd64.tar.gz #解压tar包
mv go /usr/local/ #移动go语言或直接ln软连接到系统默认可执行程序目录bin
#修改系统变量配置⽂件
# /etc/profile,/etc/bashrc 是系统全局环境变量设定
# ~/.profile,~/.bashrc⽤户家目录下的私有环境变量设定
# windows,在"我的电脑"上右击选择属性 ->系统->高级系统设置->系统属性->高级->环境变量
vi /etc/profile
export GOROOT=/usr/local/go
export GOPATH=/usr/local/go/get_package #设置环境变量,Go语言的安装位置
export NGROK_DOMAIN="your.cn" #设置环境变量,ngrok域名
export PATH=.:$GOROOT/bin:•$PATH
source /etc/profile #刷新配置

安装NGROK

源码地址:https://github.com/inconshreveable/ngrok

git clone https://github.com/inconshreveable/ngrok

生成证书

进入到第一步下载的ngrok源码根目录,执行以下命令,会在当前文件夹生成六个文件

openssl genrsa -out rootCA.key 2048 #创建根证书
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 3650 -out rootCA.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 3650
#windows 生成证书可以使用 https://gitforwindows.org/ git BASH 自带openssl工具

复制证书

cp rootCA.pem assets/client/tls/ngrokroot.crt #客户端证书
cp server.crt assets/server/tls/snakeoil.crt #服务端证书
cp server.key assets/server/tls/snakeoil.key #服务端公钥

编译

在下载的ngrok根目录编译

make release-server #创建服务端程序
make release-client #创建客户端程序
#Linux 平台32位系统:
GOOS=linux GOARCH=386 make release-server release-client
#Linux 平台64位系统:
GOOS=linux GOARCH=amd64 make release-server release-client
# Windows 平台32位系统:
GOOS=windows GOARCH=386 make release-server release-client
#Windows 平台64位系统:
GOOS=windows GOARCH=amd64 make release-server release-client
#MAC 平台32位系统:
GOOS=darwin GOARCH=386 make release-server release-client
#MAC 平台64位系统:
GOOS=darwin GOARCH=amd64 make release-server release-client
# ngrok/bin⾥⾯⽣成ngrok文件
# ngrok/bin/ngrokd 服务器端
# ngrok/bin/$GOOS/ngrok 客户端

启动ngrok服务端

/usr/local/bin/ngrokd -domain=you.cn -httpAddr=:80 -httpsAddr=:8081

启动ngrok客户端

./ngrok -config=.ngrok.conf start-all

客户端配置⽂件

server_addr: you.cn:4443
trust_host_root_certs: false
tunnels:
     docker: #别名
     subdomain: "local" #定义服务器分配域名前缀
     proto:
     http: 8081 #映射端⼝,不加ip默认本机
     front:
     subdomain: "front"
     proto:
     http: 8080

nginx 代理设置

server {
 listen 80;
 server_name you.cn *.you.cn;
 access_log /data/wwwlogs/you.cn_nginx.log combined;
 index index.html index.htm index.php;
 location / {
    proxy_set_header X-Real-IP $remote_addr;

     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

     proxy_set_header Host $http_host;

     proxy_set_header X-Nginx-Proxy true;

     proxy_pass http://127.0.0.1:8080; # 此处端口要跟 启动服务
端ngrok 时指定的端口⼀致

     client_max_body_size 10M;

     proxy_set_header Upgrade $http_upgrade;

     proxy_set_header Connection "upgrade";
     }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python每天五分钟-搭建简单的WEB服务器

    WSGI协议是描述服务器如何与客户端通信的一种协议或者规范。 要搭建一个服务器需要实现一个application(environ, start_respons...

    用户2475223
  • Python每天五分钟-输入与输出

    计算机程序都是用来服务某个特定任务的,有了输入,用户就可以通过键入不同的信息告知计算机程序该如何处理,有了输出,就可以告知用户程序运行的结果

    用户2475223
  • PHP和Python浮点数精度问题

    what? 为啥输出了57 针对这个问题,逛了鸟哥的博客。(PHP浮点数的一个常见问题的解答) 主要需要理解的就是在计算机中浮点数转成二进制时是无限长的值...

    用户2475223
  • nginx配置二级域名

    最近为了练手Vue框架,写了一个博客项目,昨天刚刚把个人博客部署上线,因为前后端分离,所以使用Ajax来请求后端api接口获取数据,部署的过程中碰到了一个坑。我...

    Originalee
  • 使用Swoole异步发送邮件

    最近做公司的一个管理系统,需要把每天的统计信息发送到领导的邮箱。由于使用SMTP协议发送邮件的速度太慢,所以只能异步发送。刚开始实现了一个基于php-reque...

    后端技术探索
  • Nginx 配置

    本文详细介绍了 nginx 常用配置。 修改主配置文件 /etc/nginx/nginx.conf worker_processes auto; http...

    康怀帅
  • DevOps之运维平台构建

    如今很多人认为devops将彻底取代传统运维,我不这么认为,在我看来devops只是很大程度上的代替了传统运维的手工操作,运维人员只需写好自动化运维脚本,利用自...

    用户7533190
  • SSH链接服务器失败

    Coxhuang
  • 科学瞎想系列之八十七 永磁电机(8)

    上一期负载特性讲的是对电机输出提出的要求,这一期我们说说电机的运行条件或者叫运行的限制条件和控制策略,如果说上一期说的是让马儿跑多快,让牛儿挤出...

    标准答案
  • 关于智慧城市系统建设,智慧管理平台介绍

    在智慧城市发展建设中,各类智慧项目建设都会需要智慧平台进行集中化管理与控制,真正能够实现智慧化智能化管控。注:本文适合对智慧城市发展建设感兴趣的人士观看。

    用户2945713

扫码关注云+社区

领取腾讯云代金券