frp穿透https总结

总结如下。

一、让云服务器独立占用80和443端口。
  这样可以达到访问云服务器网站最快,因为不用frp中转。而那些本地需要保密的数据,则需要利用frp中转。
  此时,需要将云服务器frps.ini设置成(注意云服务器端开放这些端口)

[common]
bind_addr = 0.0.0.0
bind_port = 7000
vhost_http_port = 8081
vhost_https_port = 7443

  然后,将本地frpc.ini进行如下设置

[common]
#wqy88.top 已经动态域名关联云服务器地址了
server_addr = m.wqy88.top
server_port = 7000

[main_http]
type = http
local_port = 80
custom_domains = m.wqy88.top

[main_https]
type = https
local_port = 443
custom_domains = m.wqy88.top

  最后,分别运行云服务器frps和本地frpc即可。此法,不足之处,就是访问云服务器网站不用端口号,但访问本地网站,域名要带上8081或7443端口号。
二、让云服务器只当frps中转站,frps独占80和443两个端口,云服务器无法建网站。
  好处是,可以直接域名不用端口号访问本地网站。
  此时,需要将云服务器frps.ini设置成(注意云服务器端开放这些端口)

[common]
bind_addr = 0.0.0.0
bind_port = 7000
vhost_http_port = 80
vhost_https_port = 443

  然后,将本地frpc.ini进行如下设置

[common]
#m.wqy88.top 已经动态域名关联云服务器地址了
server_addr = m.wqy88.top
server_port = 7000

[main_http]
type = http
local_port = 80
custom_domains = m.wqy88.top

[main_https]
type = https
local_port = 443
custom_domains = m.wqy88.top

  最后,分别运行云服务器fprs和本地frpc即可。此法,不足之处,就是访问本地网站不用端口号,但访问云服务器不能建网站,有点小浪费。
三、本地网站不用ssl证书也能进行https访问的其他两个方法。至于端口占用与上面两种方法思路一致。
1、云服务器利用nginx反向代理+frps中转,需要nginx对应的ssl证书。具体教程可参考:教程地址
2、本地frpc自身反向代理,需要下载nginx对应的证书到本地到frpc所在目录,云服务器正常建网站就行了。具体教程可参考:教程地址。此方法的好处是,本地网站可以http及https及花生壳内网穿透访问,目前本地网站使用的此方法和上面第一种方法结合的,即没设置强制https访问,因为反正是云服务器网站调用本地网址,像下面第五条嵌套跳转就行了。
四、注意事项。
  有关本地的apache如何搭建,如何开放ssl及设置ssl,如何申请免费的ssl证书,如何动态域名关联云服务器地址,如何强制https访问等,略。
五、总结,如果本地网站有花生壳内网穿透,则不要强制https访问(当然,购买了花生壳https穿透除外)。最后,还是让云服务器上frps占用8081和7443好,这样云服务器网站正常,以后只需要通过云服务器网站跳转链接到本地网站(部分带数据网站不便放公网上)就行了,如果不想看到地址栏有带端口本地网址的话,可采用frame嵌套即可。如,云服务器网站test.html文件,调用本地网址代码如下:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>本地网站测试</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
        <meta name="title" itemprop="name" content="本地网站测试"/>    
        <meta name="description" itemprop="description" content="本地网站测试"/>
        <meta itemprop="image" content="imgs/logo1.png"/>
        <meta property="og:image" content="imgs/logo.png"/>    
    </head> 
    <body >    
        <frame src="https://m.wqy88.top:7443/test/test.php" name="mainFrame" id="mainFrame" title="mainFrame" />
</frameset>
    </body>
</html>

https://云服务器域名/test/test.html访问云服务器相当于跳转到本地https://m.wqy88.top:7443/test。注意,其中的src中链接地址不要再带框架了,防止框架嵌套影响页面美观。