基于ngrok实现natapp内网NAT穿透与反向代理

本文为旧博客迁移的文章

使用到的工具:natapp.cn

前期准备

在控制台获得一个16位的authtoken

写入以下内容(替换authtoken)

1
2
3
4
5
6
7
8
9
#将本文件放置于natapp同级目录 程序将读取 [default] 段
#在命令行参数模式如 natapp -authtoken=xxx 等相同参数将会覆盖掉此配置
#命令行参数 -config= 可以指定任意config.ini文件
[default]
authtoken=************* #对应一条隧道的authtoken
clienttoken= #对应客户端的clienttoken,将会忽略authtoken,若无请留空,
log=none #log 日志文件,可指定本地文件, none=不做记录,stdout=直接屏幕输出 ,默认为none
loglevel=ERROR #日志等级 DEBUG, INFO, WARNING, ERROR 默认为 DEBUG
http_proxy= #代理设置 如 http://10.123.10.10:3128 非代理上网用户请务必留空

osx用户需要给权限

1
chmod +x natapp

运行 natapp,控制台返回

1
2
3
4
5
6
Powered By NATAPP       Please visit https://natapp.cn                   (Ctrl+C to Quit)             
Tunnel Status Online
Version 2.3.8
Forwarding http://*****.natappfree.cc -> 127.0.0.1:4001
Web Interface http://127.0.0.1:4040
Total Connections 0

得到类似上面的证明运行成功。

试试访问http://*****.natappfree.cc
配置失败应该返回的是:

1
Tunnel ancasc.natappfree.cc not found

配置Apache

开启多域名支持

OSX系统中XMAPP默认的配置文件是/Applications/XAMPP/xamppfiles/etc/httpd.conf,
可以找到Include etc/extra/httpd-vhosts.conf
打开/Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf文件
修改VirtualHost文件

  • 以下是路径的例子
1
2
3
4
5
<VirtualHost *:4001>
DocumentRoot "/private/var/www/xxx"
ServerName http://natappfree.cc:4001
ServerAlias http://*.natappfree.cc:4001
</VirtualHost>
  • 以下是端口转发的例子
1
2
3
4
5
6
7
8
9
10
#natapp.cn
#NameVirtualHost *:4001
Listen 4001
<VirtualHost *:4001>
ProxyPreserveHost On
ServerName http://natappfree.cc:4001
ServerAlias http://*.natappfree.cc:4001
ProxyPass / http://localhost:9501/
ProxyPassReverse / http://localhost:9501/
</VirtualHost>

上面两个二选一
然后再次访问http://*****.natappfree.cc,页面就展示出来了。

【出现问题的调试方法】
首先要确定本地服务器是否能正常运行,可以通过设置Hosts的方法来确定问题。

1
127.0.0.1    http://*****.natappfree.cc