用frp内网穿透https网站

场景说明

在微信小程序上线测试的时候,自主开发的后端服务在公司局域网,小程序前端在微信公众平台只支持配置https协议的域名来访问服务端。公司一直在使用frp内网穿透工具实现公网访问公司局域网服务,因此,研究如何实现frp代理https请求,通过自定义域名访问部署于内网的 Web 服务。

1方式

frp只做请求穿透代理,frp客户端配置的目标服务器中使用nginx实现https的请求代理
这种方式frp配置简单,系统部署与正常部署相同,使用相对简单,因此选择这种方式实现。

frp
简单来说,就是可以随时随地通过有公网 IP 的服务器中转连接到运行 frpc 程序的任意机器的任意端口

2实现过程

经过测试,发现使用第一种方式实现最为简单。

2.1配置内网穿透,在frp服务端配置文件中启用https

服务端一般安装在公网服务器上

在这里插入图片描述

2.2配置内网穿透,在frp客户端配置文件中增加配置

客户端一般在需要被公网使用的局域网服务器上

type表示请求类型,httphttpstcp
local_ip表示本地服务器的ip地址
local_port表示本地服务器的端口
remote_port表示对公网远程请求暴露的端口
subdomain表示子域名,将拼在一级域名前,例如一级域名为 test.com,子域名为 frp-test,则实际域名为frp-test.test.com
在这里插入图片描述

配置完成后重启服务
查看当前的frp客户端进程,kill该进程

ps -ef|grep frp

在这里插入图片描述

kill 80305

后台运行frp客户端

nohup ./frpc -c ./frpc.ini >> /dev/null 2>&1 &

2.3 申请ssl证书

阿里云免费ssl证书申请参考

2.4 在nginx中配置ssl证书

在阿里云SSL证书列表中下载Nginx服务器的文件,上传到在frp客户端配置的穿透的内网目标服务器上安装的Nginx的目录下,例如/etc/nginx/cert/。
在frp客户端配置的穿透的内网目标服务器上安装的Nginx中配置代理,将域名与证书配置到相应的https配置。
在这里插入图片描述

问题解决

部署成功后,使用域名和frp配置的https服务端代理端口访问无响应,检查frp服务端所在的公网云服务器的安全组配置中是否开放frp配置的https服务端代理端口。例如配置的端口是4430,需要手动添加4430端口的安全组规则,一般默认使用443端口。
在这里插入图片描述

### 使用 FRP 进行内网穿透并配置 HTTPS #### 安装和准备 为了使 FRP 正常运行,服务器端(具有公网 IP 的机器)和服务端(位于内网的机器)都需要安装对应的程序。对于 HTTPS 协议的支持,FRP 提供了 `https` 和 `tunnel` 类型来处理这类请求。 确保已经获取了域名以及相应的 SSL/TLS 证书文件,这些文件通常包括 `.crt` 或者 `.pem` 文件用于公钥认证,`.key` 文件则保存私钥[^1]。 #### 服务端 (Server) 配置 编辑 `/etc/frps.ini` 或其他指定位置的服务端配置文件: ```ini [common] bind_port = 7000 vhost_http_port = 80 vhost_https_port = 443 dashboard_port = 7500 privilege_token = your_secure_password tls_cert_file = /path/to/your/cert.pem tls_key_file = /path/to/your/key.pem ``` 上述配置指定了 HTTP(S) 请求监听端口,并启用了 TLS 加密连接所需的证书路径[^2]。 #### 客户端 (Client) 设置 接着,在客户端上创建或修改 `/etc/frpc.ini` 文件如下所示: ```ini [common] server_addr = x.x.x.x ; 替换成实际的服务端地址 server_port = 7000 ; 对应于 bind_port 参数值 privilege_token = your_secure_password [web] type = https ; 明确指出此条目为 HTTPS 流量转发 local_ip = 127.0.0.1 ; 内部 Web 应用所在主机 IP 地址,默认即可 local_port = 80 ; 转发至内部 Web 应用开放的端口号 custom_domains = example.com ; 将要绑定到该子域上的自定义域名列表 ``` 这里设置了与服务端相同的权限令牌以验证身份;同时声明了一个名为 `[web]` 的代理实例,其作用就是把来自外部针对特定域名的所有 HTTPS 请求重定向给本地 web server 处理[^3]。 完成以上步骤之后重启双方的服务进程让更改生效。此时当访问 `https://example.com` 时就会自动被路由到内网中的目标站点上了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值