zhaojishun 的博客

记录精彩的程序人生

生命不息,折腾不止!
  menu
43 文章
176023 浏览
2 当前访客
ღゝ◡╹)ノ❤️

FRP内网穿透 HTTPS

FRP内网穿透 使用HTTPS

场景、

https 内网穿透主要用于微信回调测试等场景

服务器有Nginx下工作

1、准备工作

  • 公网服务器一台
  • 域名一个
  • SSL证书 (公网服务器用)
  • Nginx (公网服务器用)
  • frp 服务端
  • frp客户端

将域名解析到公网服务器

frp软件下载地址 https://diannaobos.com/frp/

蓝奏云链接:https://wwi.lanzous.com/b00of04pe 密码:5mro

2、整体架构

image-20210326165845872

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 &

启动成功输出

image-20210326164145255

使用云服务器需要在安全组开放 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配置

下载解压

image-20200511163445339

修改目录下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

image-20210326170132858

出现start proxy success即为成功

5、测试

frp https

服务器无Nginx下工作

前期内容请看上面

通过 https2http 插件可以让本地 HTTP 服务转换成 HTTPS 服务对外提供。

  1. 服务器端frps.ini 内容如下:

    [common]
    bind_port = 7000
    vhost_https_port = 443
    
  2. 穿透端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
    
  3. 分别启动 frps 和 frpc。

  4. 通过浏览器访问 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


标题:FRP内网穿透 HTTPS
作者:zhaojishun
地址:http://blog.zhaojishun.cn/articles/2021/03/26/1616753494067.html