使用 frp 实现 https 内网穿透
参考:
frp 官方文档 https://gofrp.org/docs/ frp下反向代理实现https协议 https://www.cnblogs.com/shook/p/12790532.html 使用 Systemd 设置 frp 开机启动 https://notfound.cn/posts/systemd-frp/
关于内网穿透的原理,本质上就是将服务器的请求转发到本地,所以需要一个工具来实现。
内网穿透的工具有很多,由于笔者有自己的服务器和域名,所以选择自建。
在这里选择 frp 作为内网穿透工具。
具体的安装及部署参考官方文档即可,在这里要说明的是, frp 提供了多个平台的二进制可执行包,在下载的时候注意下平台问题。
这里额外提一嘴,如果需要实现开机自启,则可参考官方已经编写好的 systemd 文件,例如要执行 frps ,则将 frps.service 文件扔到 /lib/systemd/system/ 目录下即可。同时将 frps 二进制文件扔到 /usr/bin/ 下,配置文件 frps.ini 扔到 /etc/frp/ 下。如果放在别的目录下,则修改 frps.service 文件中的
ExecStart=/usr/bin/frps -c /etc/frp/frps.ini一行即可最后即可使用
systemctl status frps指令来测试是否成功。
由于我们要部署的是通过域名来访问本地(内网)的 web 服务,因此参考官方文档中 通过自定义域名访问内网的 Web 服务 可以很简单的实现对 http 请求的转发。
但官方只说明了对 http 请求的转发,作为一个基本上不使用 http 协议来搭建服务的人来说,不使用 https 来访问线上请求是有点难受的。而且要想通过域名访问,则必然需要使用 Nginx 或其他工具进行反向代理。
在这里,由于对官方文档的误解,我原先以为 Nginx 要转发到的端口是 https 端口,但实际上是要转发到 http 端口。
即
1 | # frps.ini |
最终的请求处理逻辑如下:
访问域名 -> 请求服务器 -> Nginx 转到 frp -> frp 转发到本地服务器 -> 本地处理完逻辑响应请求
本文作者:草梅友仁
本文地址: https://blog.cmyr.ltd/archives/cb31575b.html
版权声明:本文采用 CC BY-NC-SA 4.0 协议 进行分发,转载请注明出处!