域名解析

dev.applehater.cn 解析A记录到服务器

*.dev.applehater.cn 解析A记录到服务器

不使用泛域名就只能指定若干固定域名,以下配置将会使用到域名

以下步骤均使用 root 权限执行

编译安装

编译过程可能需要下载蔷外的资源,请做好准备。

1. 安装 Go 环境

1
2
3
4
wget https://storage.googleapis.com/golang/go1.7.4.linux-amd64.tar.gz \
&& tar -xvf go1.7.4.linux-amd64.tar.gz -C /usr/local \
&& export GOROOT=/usr/local/go \
&& export PATH=$GOROOT/bin:$PATH
1
go version

2. 安装 Ngrok

创建目录

1
2
3
mkdir /opt/ngrok
cd /opt/ngrok
git clone https://github.com/inconshreveable/ngrok.git

生成密钥

1
2
cd ngrok
export NGROK_DOMAIN="dev.applehater.cn" #设置你的域名

一行执行

1
2
3
4
5
6
openssl genrsa -out base.key 2048 \
&& openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.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 base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt \
&& cp base.pem assets/client/tls/ngrokroot.crt

编译

1
2
3
4
GOOS=linux GOARCH=amd64 make release-server \
&& GOOS=linux GOARCH=amd64 make release-client \
&& GOOS=windows GOARCH=amd64 make release-client \
&& GOOS=darwin GOARCH=amd64 make release-client

运行

1
nohup ./bin/ngrokd -domain="dev.applehater.cn" -tlsKey=server.key -tlsCrt=keserver.crt -httpAddr=":9000" -httpsAddr=":9001" > out.log &

3. Nginx 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
listen 80;
root /usr/share/nginx/html;
index index.html index.htm;
server_name *.dev.applehater.cn;# 泛域名解析

location / {
proxy_pass http://localhost:9000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}
}

4. 客户端配置

创建文件夹 ngrok 放进ngrok进去

创建启动脚本 start.sh

1
./ngrok -config ngrok.cfg start localhost

创建配置文件 ngrok.cfg

1
2
3
4
5
6
7
server_addr: "dev.applehater.cn:4443"
tunnels:
localhost:
hostname: "zohar.dev.applehater.cn" #定义子子域名
proto:
http: 127.0.0.1:8081 #映射端口,不加ip默认本机
https: 1127.0.0.1:443

赋予可执行权限

1
chmod a+x ngrok

运行

1
./start.sh

在开发调试基于 Oauth 的接口(微信,微博等)非常有用。

使用 docker 运行 ngrok

dev.applehater.cn改成你需要的域名

编译ngrok

1
2
3
4
5
6
docker run -idt --name ngrok-server \
-v /opt/ngrok:/myfiles \
-p 9000:80 \
-p 9001:443 \
-p 4443:4443 \
-e DOMAIN='dev.applehater.cn' hteen/ngrok /bin/sh /server.sh

运行ngrok

1
2
docker run --rm -it -e DOMAIN="dev.applehater.cn" \
-v /opt/ngrok:/myfiles hteen/ngrok /bin/sh /build.sh