FRP内网穿透 使用HTTPS
场景、
https 内网穿透主要用于微信回调测试等场景
服务器有Nginx下工作
1、准备工作
- 公网服务器一台
- 域名一个
- SSL证书 (公网服务器用)
- Nginx (公网服务器用)
- frp 服务端
- frp客户端
将域名解析到公网服务器
frp软件下载地址 https://diannaobos.com/frp/
蓝奏云链接:https://wwi.lanzous.com/b00of04pe 密码:5mro
2、整体架构
3、服务器端部署工作
frp
在你的有公网ip的服务器上操作,以Linux为例
# 下载官方压缩包,根据服务器的操作系统进行选择,这里以centOS7为例 上面的链接中也有本文件
yum -y install wget && wget https://github.com/fatedier/frp/releases/download/v0.31.2/frp_0.31.2_linux_amd64.tar.gz
# 解压压缩包
tar -zxvf frp_0.31.2_linux_amd64.tar.gz
# 进入目录
cd frp_0.31.2_linux_amd64
#修改配置文件 frps.ini
[common]
# frp 服务端口,客户端如果要使用 frp 服务则连接这个端口;
bind_port = 7000
#代理 http 的端口;
vhost_http_port = 88
#启动frp服务端
./frps -c ./frps.ini
# 也可设置后台运行frp服务端
#nohup ./frps -c ./frps.ini &
启动成功输出
使用云服务器需要在安全组开放 443 与 7000 端口,使用 firewall 也需要开放端口
nginx
安装nginx :略
nginx主要配置访问域名、ssl证书文件、反代frp的http端口
upstream frp.zhaojishun.cn {
# 反代frp的http端口
server 127.0.0.1:88;
}
server
{
listen 80;
listen 443 ssl http2;
# 访问域名
server_name frp.zhaojishun.cn;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#ssl证书文件
ssl_certificate /www/server/panel/vhost/cert/frp.zhaojishun.cn/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/frp.zhaojishun.cn/privkey.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
location / {
proxy_pass http://frp.zhaojishun.cn;
}
}
配置中重要的点
upstream frp.zhaojishun.cn {
# 反代frp的http端口
server 127.0.0.1:88;
}
listen 80;
listen 443 ssl http2;
# 访问域名
server_name frp.zhaojishun.cn;
#ssl证书文件
ssl_certificate /www/server/panel/vhost/cert/frp.zhaojishun.cn/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/frp.zhaojishun.cn/privkey.key;
location / {
proxy_pass http://frp.zhaojishun.cn;
}
4、穿透端frp配置
下载解压
修改目录下frpc.ini文件的内容。
[common]
# 这里填写 服务器 的 IP 或者域名
server_addr = 123.57.10.XX
# 填写 服务器 开放的 frp 服务端口,也就是 frps.ini 配置文件中 bind_port 的值
server_port = 7000
[walterlv_example]
# 配置 http 访问
type = http
# 本地 Web 服务的端口
local_port = 5500
use_encryption = false
use_compression = true
# 需要反向代理的域名(当访客通过此域名访问 服务器 时,服务器才会发送给本地web服务
custom_domains = frp.zhaojishun.cn
然后再cmd命令行中进入该解压后的目录,输入并回车(不要关闭窗口)
frpc -c frpc.ini
出现start proxy success
即为成功
5、测试
服务器无Nginx下工作
前期内容请看上面
通过 https2http
插件可以让本地 HTTP 服务转换成 HTTPS 服务对外提供。
-
服务器端frps.ini 内容如下:
[common] bind_port = 7000 vhost_https_port = 443
-
穿透端frpc.ini 内容如下:
[common] server_addr = 116.62.198.219 server_port = 7000 [test_htts2http] type = https custom_domains = test.zhaojishun.cn plugin = https2http plugin_local_addr = 127.0.0.1:5500 # HTTPS 证书相关的配置 plugin_crt_path = ./5387757_test.zhaojishun.cn_public.crt plugin_key_path = ./5387757_test.zhaojishun.cn.key plugin_host_header_rewrite = 127.0.0.1 plugin_header_X-From-Where = frp
-
分别启动 frps 和 frpc。
-
通过浏览器访问
https://test.zhaojishun.cn
。
参考资料
https://gofrp.org/docs/examples/https2http/
https://blog.csdn.net/WPwalter/article/details/105858548
https://blog.csdn.net/zhangruhong168/article/details/80353274