使用内网穿透给本地项目部署域名跟 https
00 min
2019-9-4
2024-7-18
type
status
date
slug
summary
tags
category
icon
password
📖
内网穿透可以把一台非公网 IP 的机子暴露给外网,实现外网在任何地方都能访问到这台机子部署的 web。
一般用于开发期还没部署到服务器或者需要频繁修改,又想给客户测试时临时使用。

目标实现

在任意网络输入 https://dev.frp.xxx.com 来访问运行在本地 5000 端口的 web 项目。

所需工具

  • 一台有公网 IP 的 VPS (Ubuntu)
  • 域名一个
  • supervisor
  • nginx

步骤(VPS 端)

安装 frp

查看系统内核版本,然后在 frp 仓库的releases下载对应的版本
这里是 64 位,就下载 frp_0.29.0_linux_amd64.tar.gz
PS:如果权限不够,请自行加 sudo
修改配置文件 frps.ini
PS:没有vim的需要先安装 apt-get install vim
在/opt/frp/目录下编辑 frps.ini
subdomain_host是你的域名,这里在域名加 frp 是为了避免污染你的二级域名,之后会申请 frp.xxx.com 的泛域名证书(因为一级域名似乎没法免费申请泛域名证书),方便在 PC 端可以直接配置多个 xxx.frp.xxx.com 这种三级域名的 https。

安装 supervisor

使用 supervisor 来让 frp 开机自启
创建 supervisor frps 配置文件
在 /etc/supervisor/conf.d 创建 frp.conf
重启 supervisor,查看状态
如果显示 frp RUNNING 就是正常运行了

安装 Nginx

申请免费的 SSL 证书

  • 在输入框输入你刚刚配置的域名,比如: .frp.xxx.com,选择 Let's Encrypt V2;
  • 按照提示流程申请,申请后需要校验域名的解析,才会核发,需要在域名供应商那里按提示添加 TXT 解析即可,同时也要将 .frp.xxx.com 泛解析到你的 vps 上;
  • 申请成功之后,在 KeyManager 软件工具那里导出 nginx 版本的证书。
将导出来的的证书放在 nginx 的目录下,分别是:
/etc/nginx/ssl/*.frp.xxx.com/*.frp.xxx.com_chain.crt
/etc/nginx/ssl/*.frp.xxx.com/*.frp.xxx.com_key.key

配置 Nginx

在/etc/nginx/conf.d 目录下添加 frp.conf 文件:
保存后重启 nginx
如果没有报错,则配置是正确的
这个配置主要用于添加泛域名证书,顺便把 8080 端口反向代理 80。
不反向代理访问 web 会是这样的:https://xxx.frp.xxx.com:8080
而反向代理访问 web 会是这样的:https://xxx.frp.xxx.com
到此,vps 端就全部配置好了

本地 PC 端配置

本地也需要下载对应的 frp 客户端软件,在 release 下载 windows 版本的即可。
下载解压后,修改里面的 frpc.ini 的配置:
  • server_addr 是你的服务器 ip
  • server_port 是对应服务器端配置的端口
  • subdomain 是三级域名,即 dev.frp.xxx.com
  • type 虽然可以设置为 https,但是证书需要放在本地,通用性不强,换了其他电脑,还需要重新拷一份 ssl 证书。
保存后,启动 cmd 或者 PowerShell 在软件目录直接运行:
如果显示 start proxy success,则表示连接成功,已经实现内网穿透了,可以通过外网输入 https://dev.frp.xxx.com 或者 https://test.frp.xxx.com 来访问运行在本地 5000 或者 5050 端口的 web。
上一篇
MouseEvent 鼠标事件的属性
下一篇
Chrome 安装旧版扩展