自己搭建ngrok服务端的官方文档:
https://github.com/inconshreveable/ngrok/blob/master/docs/SELFHOSTING.md
本文关注ngrok与apache反向代理配置,共用80端口的问题,及安装为服务的方法
编译客户端请参考:
http://blog.csdn.net/u013216667/article/details/50782084
安装
服务端ngrokd可以直接使用统一客户端,指定不同证书即可
客户端需要自行编译
apt-get install ngrok-server
启动
证书中的域名需要与使用的域名一致
ngrokd -domain=tunnel.wamdy.com -tlsKey=server.key -tlsCrt=server.crt -httpAddr=:80
Apache反向代理
引入模块
ln -s /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled/proxy.load
ln -s /etc/apache2/mods-available/proxy.conf /etc/apache2/mods-enabled/proxy.conf
ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled/proxy_http.load
配置
<VirtualHost *:80> ServerName tunnel.wamdy.com ServerAlias *.tunnel.wamdy.com <Proxy *> Order deny,allow Allow from all </Proxy> RewriteEngine On ##所有80端口访问重定向到99端口 RewriteRule ^/(.*)$ http://%{HTTP_HOST}:99/$1 [P] ## 修改重定向头,防止3XX响应跳转到真实端口 Header edit Location "^http://(.*):99/(.*)$" "http://$1/$2" </VirtualHost>
将ngrok安装为服务
创建systemd配置文件
$ sudovim /etc/systemd/system/ngrok.service
写入内容
[Unit]
Description=start and stop the ngrok server
After=syslog.target network.target
[Service]
PrivateTmp=true
Type=simple
Restart=always
RestartSec=1min
StandardOutput=null
StandardError=null
ExecStart=/usr/bin/ngrokd -domain=tunnel.wamdy.com -httpAddr=:99 -httpsAddr=:999 -tlsKey=/opt/ngrok/device.key -tlsCrt=/opt/ngrok/device.crt %i
ExecStop=/usr/bin/killall ngrok
[Install]
WantedBy=multi-user.target
修改文件权限为:777
启用服务
systemctl enable ngrok.service
启动服务
Service start ngrok