别浪费服务器的公网ip,试着用ngrok来做反向代理

目录

  • ngrok来做反向代理
    • 介绍
    • 使用

ngrok来做反向代理

介绍

ngrok是做反向代理的神器,之前用的花生壳,但其速度属实有点慢。现在自己买了服务器,可以尝试下ngrok自己搭建代理,其实我在写GitHub的很多开源项目中看到了它的身影。ngrok是用go语言开发的,其作用是将本地服务越过防火墙和NAT(network address transfer)暴露到公网中。
别浪费服务器的公网ip,试着用ngrok来做反向代理_第1张图片

使用

楼主使用ngrok来解决微信订阅号的开发的本地调试,ngrok一次编译可得到linux和windows版本的客户端。服务器系统:centos 7 , 本地系统:Windows 10

  • 克隆源码到本地
    $ git clone https://github.com/inconshreveable/ngrok.git
  • 安装必要的go环境和git
    $ yum install build-essential golang mercurial git
  • 生成证书
$ export NGROK_DOMAIN="your web domain"
$ openssl genrsa -out rootNG.key 2048
$ openssl req -x509 -new -nodes -key rootNG.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootNG.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 rootNG.pem -CAkey rootNG.key -CAcreateserial -out server.crt -days 5000
  • 替换默认的证书
$ cp server.crt assets/server/tls/snakeoil.crt
$ cp server.key assets/server/tls/snakeoil.key
$ cp rootNG.pem assets/client/tls/ngrokroot.crt
  • 编译ngrok 和 ngrokd
$ make release-server
$ GOOS=windows GOARCH=amd64 make release-client
  • 利用scp将bin/windows_amd64/ngrok.exe下载到Windows系统
  • 启动ngrokd
$ ngrokd -domain=ngrok.domain.com -httpAddr=:1234 -httpsAddr=:12345 -tunnelAddr=":4443" &

其中 -httpAddr指定http协议代理的端口,-httpsAddr指定https协议代理的端口,-tunnelAddr指定客户端与ngrok传输控制端口,可以在在这里把httpAddr设为80,httpsAddr设为443,这样的话可以默认使用*.ngrok.domain.com访问该网站。

  • 新建客户端配置ngrok.cfg
server_addr: "ngrok.domain.com:4443"
trust_host_root_certs: false

其中server_addr 为你配置的服务地址

  • 启动客户端
ngrok.exe -subdomain demo -config=ngrok.cfg -log=log.txt 8080

demo 为代理的子域名,如 demo.ngrok.domain.com, 8080ngrok映射的本地端口

别浪费服务器的公网ip,试着用ngrok来做反向代理_第2张图片

你可能感兴趣的:(JAVA,WEB)