charles请求转发_用免费开源的frp实现内网穿透,使用nginx转发的方式去掉端口号…

需要用内网穿透技术来实现通过其他公网 IP 来访问家里的 NAS 设备的需求,frp使用起来更加简便灵活,以及项目一直开源,所以本文选择frp作为示例

frp的github地址 :https://github.com/fatedier/frp
frp的下载地址:https://github.com/fatedier/frp/releases

一、服务端部署

1、服务器端下载linux版本,也可以通过命令下载

##下载对应版本的Frpwget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz##解压tar -xzvf frp_0.21.0_linux_amd64.tar.gz##进入目录cd frp_0.21.0_linux_amd64##删除服务端相关的文件rm -rf frpc*

2、新建目录mkdir -p /usr/local/frp,上传frp_0.xx.0_linux_amd64.tar.gz至linux服务器该目录下

3、解压tar -zxvf frp_0.xx.0_linux_amd64.tar.gz

4、进入解压目录cd frp_0.xx.0_linux_amd64,这里主要关注4个文件,分别是frpc、frpc.ini和frps、frps.ini,前者两个文件是客户端所关注文件,后者两个文件是服务端所关注两个文件。

5、配置服务端(公网服务器),首先删掉frpc、frpc.ini两个文件,然后再进行配置,vi ./frps.ini,

编辑服务端配置文件frps.ini

[common]dashboard_port = 7500 //Dashboard端口dashboard_user = admin //账号dashboard_pwd = admin //密码bind_port = 7000vhost_http_port = 8080server_addr = x.x.x.x //服务器id[ssh]type = tcplocal_ip = 127.0.0.1local_port = 22remote_port = 6000

保存然后启动服务./frps -c ./frps.ini,这是前台启动,后台启动命令为nohup ./frps -c ./frps.ini &

运行服务端frp

nohup ./frps -c ./frps.ini > info.log 2>&1 & echo $! > tpid

3 查看效果&&隐藏端口号,访问浏览器控制面板

7e02efaeabb4b3fd012f356b23d53370.png

访问http://nas.example.com:8080

a6e279f11d6ff928e8bcdffa253b83b9.png

这时候我们使用网址访问的时候是会带端口号的。看着很烦。这里使用nginx转发的方式可以去掉8080。nginx添加conf如下:

##下载对应版本的Frpwget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz##解压tar -xzvf frp_0.21.0_linux_amd64.tar.gz##进入目录cd frp_0.21.0_linux_amd64##删除服务端相关的文件rm -rf frps*

二、 客户端部署(内网服务器),首先删掉frps、frps.ini两个文件,然后再进行配置,vi ./frpc.ini

[common]server_addr = x.x.x.x //服务端的IP地址server_port = 7000[ssh]type = tcplocal_ip = 127.0.0.1local_port = 22remote_port = 6000[nas]type = httplocal_ip = 192.168.0.100 //nas的局域网iplocal_port = 5000custom_domains = nas.example.com

编辑客户端的配置文件frpc.ini

[common]server_addr = x.x.x.x //服务端的IP地址,#公网服务器ipserver_port = 7000 #与服务端bind_port一致[ssh]type = tcp #连接协议local_ip = 192.168.0.100 #内网服务器iplocal_port = 22#ssh默认端口号remote_port = 6000#自定义的访问内部ssh端口号#公网访问内部web服务器以http方式[nas]type = http#访问协议local_ip = 192.168.0.100 //nas的局域网iplocal_port = 5000 custom_domains = www.hao7a.com#所绑定的公网服务器域名,一级、二级域名都可以

运行客户端frp,保存然后执行./frpc -c ./frpc.ini启动,这是前台启动,后台启动命令为nohup ./frpc -c ./frpc.ini &

windows下双击frpc.exe或者用命令 frpc -c frpc.ini即可启动客户端

nohup ./frpc -c ./frpc.ini > info.log 2>&1 & echo $! > tpid

有个问题:能像ngrok那样显示每个http请的信息吗?用来做微信端web开发的,需要知道微信服务端和用户都请求了什么,ngrok就可以通过客户端的一个本地端口来显示这些信息,并向内网模拟重新发起请求。

网友给出的解决方案:
觉得这类功能更适合添加一个HTTP代理服务器来实现,比如:
weixin—>frps—->frpc—->http-proxy—>http-source
这样frpc只要能够支持http的代理服务即可,而http-proxy你就有N总成熟的方案可以选择。
filldder, charles, 这两个可能是用的最多的,这个功能交给专业的 HTTP Proxy 工具好了,没必要重复造轮子。Python 用 mitmproxy,nodejs 用 anyproxy。

(以上仅仅是笔记,供学习交流)

原文链接:https://blog.csdn.net/weixin_33514300/article/details/112147432

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享