1我的目标:
实现通过域名访问局域网tomcat服务,域名访问方便本地微信调试
2思路:
利用FRP实现穿透,frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
详细搭建教程见后文
路由或猫有了拨号后,即可获得公网IP,再由路由或猫映射到内网机器端口
由于普通宽带是动态IP,所以如果要全自动切换或查询,则需要动态获取IP,思路如下
比如花生壳,natapp,想要速度快、域名固定,则需要付费,
免费速度很慢,域名总变
3利用服务器,搭建FRP流程
思路流程见上文2.(1)
我需要用https协议,所以监听443端口,并转发到FRP服务端IP:28700
server { listen 443 ssl; server_name 你的域名; root html; index index.html index.htm; ssl_certificate cert/你的域名证书.pem; ssl_certificate_key cert/你的域名证书.key; ssl_session_timeout 60m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #表示使用的加密套件的类型。 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。 ssl_prefer_server_ciphers on; location / { #root /usr/share/nginx/html/; #Web网站程序存放目录。 #index index.html index.htm; proxy_pass http://FRP服务端IP:28700/; proxy_redirect http:// $scheme://; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
服务器新建frps.ini配置文件
[common] bind_port = 7000 vhost_http_port = 28700 authentication_method = token authenticate_new_work_conns = true token = 123456
28700端口用于接收nginx转发的访问请求
7000端口用于frp服务端接收请求后 与 内网frp客户端的7000通信
token是自定义秘钥,用于安全校验
在服务器上,通过docker拉取FRP的服务端并启动
docker run --name frps -d -p 28700:28700 -p 7000:7000 -v /docker/frp/frps.ini:/etc/frp/frps.ini -v /etc/localtime:/etc/localtime:ro -e "TZ=Asia/Shanghai" snowdreamtech/frps
我用的frp_0.46.0_windows_386.zip,
然后新建frpc.ini
[common] server_addr = 服务器公网IP server_port = 7000 authentication_method = token authenticate_new_work_conns = true token = 123456 [web] type = http local_port = 80 custom_domains = 域名
7000用于与服务器保持通信
80端口为本机服务端口,域名是最上面那个域名
然后cmd下启动frp客户端,也可以保存为bat,方便启动
frpc.exe -c frpc.ini
这样就实现了域名访问到本机80端口服务
4、frp内网穿透的各种场景
帮助文档详见:
这个示例通过简单配置 TCP 类型的代理让用户访问到内网的服务器。
这个示例通过简单配置 HTTP 类型的代理让用户访问到内网的 Web 服务。
这个示例通过简单配置 UDP 类型的代理转发 DNS 查询请求。
这个示例通过配置 Unix域套接字客户端插件来通过 TCP 端口访问内网的 Unix域套接字服务,例如 Docker Daemon。
这个示例通过配置 static_file 客户端插件来将本地文件暴露在公网上供其他人访问。
通过 https2http 插件可以让本地 HTTP 服务转换成 HTTPS 服务对外提供。
这个示例将会创建一个只有自己能访问到的 SSH 服务代理。
这个示例将会演示一种不通过服务器中转流量的方式来访问内网服务。
5、资源汇总
项目地址:
DockerHub:
原文链接:https://blog.csdn.net/yfx000/article/details/129307311