# 可选步骤,建docker源修改为阿里云
在开发微信公众号或者小程序时,腾讯服务器的回调地址需要是外网的真实备案域名才能回调成功,作为本地开发调试时,有经验的开发者通常都是编写代码后上传服务器进行运行调试,但这对于新手开发者,这样开发效率太低。所以本文推荐把本地开发的项目,通过nps的域名反向代理,实现外网访问本地开发项目。
nps这个开源项目的简要介绍:
NPS 是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持 tcp、udp 流量转发,可支持任何 tcp、udp 上层协议(访问内网网站、本地支付接口调试、ssh 访问、远程桌面,内网dns解析等等……),此外还支持内网 http 代理、内网 socks5 代理、p2p 等,并带有功能强大的 web 管理端。
它能实现的功能有很多,而要解决我们这里的问题,只需要它里面的一个功能,做微信公众号开发、小程序开发等----> 域名代理模式。
首先查看官方文档 把工具下载下来。然后进行部署。
首先您要有一个vps空间,或者阿里云,腾讯云之类的服务器,并已经通过备案和域名已经解析到80端口上。做开发的朋友,一般都会有 自己的测试服务器吧,这个不多说。
用这个服务器安装nps的 服务器端安装包。安装后,windows系统会在c:\program
1、下载服务器端包,把服务器安装包 从这里下载
下载完服务器压缩包后,解压,然后进入解压后的文件夹 如果发现没有启动成功,可以使用nps(.exe) stop,然后运行nps.(exe)运行调试, 访问服务端ip:web服务端口(默认为8080) 使用用户名和密码登陆(默认admin/123,正式使用一定要更改)2、本地电脑安装客户端安装包,把安装包解压后,进入cmd命令行,cd到解压的目录路径下。
下载客户端安装包并解压,进入到解压目录
点击web管理中客户端前的+号,复制启动命令
3、进入服务器端web管理后台,添加客户端和域名,得到配置参数。
访问服务端ip:web服务端口(默认为8080)
https: 如需使用https请在配置文件中将https端口设置为443,和将对应的证书文件路径添加到配置文件中,上面添加的这条记录将会把http、https都转发到内网目标
适用范围: ssh、远程桌面等tcp连接场景
内网目标,负载均衡时多个目标,逗号隔开 |
本代理支持根据URL将同一域名转发到不同的内网服务器,可在web中或客户端配置文件中设置,此参数也可忽略,例如在客户端配置文件中
如果将一些危险性高的端口例如ssh端口暴露在公网上,可能会带来一些风险,本代理支持限制ip访问。
使用方法: 在配置文件/cnlh/,有一台公网机器ip为访问访问解析到公网服务器,内网目标:,内网目标:,即可成功
https: 如需使用https请在配置文件中将https端口设置为443,和将对应的证书文件路径添加到配置文件中,上面添加的这条记录将会把http、https都转发到内网目标
适用范围: ssh、远程桌面等tcp连接场景
内网目标,负载均衡时多个目标,逗号隔开 |
本代理支持根据URL将同一域名转发到不同的内网服务器,可在web中或客户端配置文件中设置,此参数也可忽略,例如在客户端配置文件中
如果将一些危险性高的端口例如ssh端口暴露在公网上,可能会带来一些风险,本代理支持限制ip访问。
使用方法: 在配置文件nps.conf中设置ip_limit
=true,设置后仅通过注册的ip方可访问。
ip注册: 在需要访问的机器上,运行客户端
time为有效小时数,例如time=2,在当前时间后的两小时内,本机公网ip都可以访问nps代理.
注意: 本机公网ip并不是一成不变的,请自行注意有效期的设置,同时同一网络下,多人也可能是在公用同一个公网ip。
为防止恶意大量长连接,影响服务端程序的稳定性,可以在web或客户端配置文件中为每个客户端设置最大连接数。该功能针对socks5
、http正向代理
、域名代理
、tcp代理
、私密代理
生效。
bridge_port
一致即可,将自动识别。
web_host
也就是一个二级域名以便区分
npc支持环境变量渲染以适应在某些特殊场景下的要求。
在无配置文件启动模式下: 设置环境变量
直接执行./npc即可运行
在配置文件启动模式下:
在配置文件中填入相应的环境变量名称,npc将自动进行渲染配置文件替换环境变量
当客户端以配置文件模式启动时,支持多节点的健康检查。配置示例如下
health关键词必须在开头存在
第一种是http模式,也就是以get的方式请求目标+url,返回状态码为200表示成功
第一种是tcp模式,也就是以tcp的方式与目标建立连接,能成功建立连接表示成功
如果失败次数超过health_check_max_failed
,nps则会移除该npc下的所有该目标,如果失败后目标重新上线,nps将自动将目标重新加入。
健康检查目标,多个以逗号(,)分隔 |
健康检查url,仅http模式适用 |
本代理前会在每一个请求中添加了这两个 header。
在web管理中的修改将实时使用,无需重启客户端或者服务端
在web管理中将显示客户端的连接地址
可统计显示每个代理使用的流量,由于压缩和加密等原因,会和实际环境中的略有差异
为了程序正常运行,客户端与服务端的版本必须一致,否则将导致客户端无法成功连接致服务端。
测试环境: 1M带宽云服务器,理论125kb/s,带宽与代理无关,与服务器带宽和内网客户端外网带宽关系较大。
为了最大化的提升效率和并发,客户端与服务端之间仅两条tcp连接,减少建立连接的时间消耗和多余socket连接对机器性能的影响。
注意: 为保证安全,时间戳的有效范围为20秒内,所以每次提交请求必须重新生成。
如果想获取authKey,服务端提供获取authKey的接口
将返回加密后的authKey,采用aes cbc加密,请使用与服务端配置文件中cryptKey相同的密钥进行解密
为方便第三方扩展,在web模式下可利用webAPI进行相关操作,详情见
# 可选步骤,建docker源修改为阿里云
-> 用来访问内网穿透服务
# 这里使用自己的域名
# 这里使用自己的域名 # 这里根据你的lanproxy配置,改成 外网接口 的值,在lanproxy后台网页上配置,后面配置
conf//ffay/
来访问我们的内网服务了的,用浏览器打开看看
为什么要使用docker?
使用docker主要是为了不破坏服务端环境,只是给 lanproxy
安装了一个 jdk8
的环境,不影响其他服务继续运行;而且使用 docker
还可以很方便的转移到其它机器上面部署,只要把 Dockerfile
拷贝过去就可以了。
这样搭建,服务器重启的话需要手动重启 lanproxy
吗?
不需要,在服务端启动 docker
容器的脚本下,我添加了 --restart unless-stopped
参数,只要 docker
服务启动了,容器就会跟着启动,如果你不需要这个需求,可以去掉这个参数
前不久看到花生壳的公告,说从4月1日开始,免费版将不提供80端口映射,实际上我用这个映射最大的需求就是做微信调试,去掉80端口就不能做微信调试了,不满足我的需求了,当然,花生壳还是不错的,如果能满足你的需求,还是可以省时省力完成内网穿透的
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。