
frpc配置ssl证书穿透http流量为https并强制跳转
frpc转发内网的http流量为https并配置ssl证书和强制跳转https,用于内网穿透建站博客等。
欢迎来我的博客星落_Blog (https://blog.starfall.love) 点击有惊喜。
试错过程简述
我搭建博客使用的是onepanel后台管理系统+halo来完成的。全程跟着官方手册和教学视频进行,然而为了安全,http流量需要转发为https公布到公网,这个简单的任务花了我一个外行整整一天半来解决。起初一直在onepanel的Nginx上折腾ssl证书和反向代理,但是无论怎么配置都会导致代理后打不开网页,报错为:

此网站无法提供安全连接 ERR SSL PROTOCOL ERROR。这个报错导致我一度认为是ssl证书的问题。浪费了我很多时间。
然而无论直到在onepanel的github issue发现了了类似的问题,才发现不能通过onepanel内置的Nginx服务来进行配置,而是要通过frpc内网穿透客户端的配置来解决问题。
域名申请与DNS解析,SSL申请
我申请了腾讯云的DNSPOD域名,因为要做内网穿透,所以要把域名解析到内网穿透服务商的地址上。
DNSPOD:记录值填写内网穿透服务商提供的服务器地址(如果自己的服务器有公网IP则写自己的公网ip即可,本文主要针对的是没有公网IP的自建服务器)。
点击SSL可以为域名申请SSL证书,这是进行https配置的前提条件,申请后将Nginx的ssl证书压缩包下载到个人服务器上并且解压备用。
onepanel配置(可选)
我的halo博客使用了本地的2085端口转发流量,但是我不想直接把这个端口暴露在公网上,所以我使用了halo的Nginx反向代理服务把2085的http流量转发到了本地的2086端口上,后续对2086端口的服务进行公网映射即可。
onepanel配置方法可以参考官方教程【1Panel功能演示视频】2. 网站管理_哔哩哔哩_bilibili
我生成的配置:
server {
listen 80 ;
listen 2086 ;
server_name blog.starfall.love 127.0.0.1;
#return 301 http://blog.starfall.love; #301重定向,换域名的时候用的上
index index.php index.html index.htm default.php default.htm default.html;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
access_log /www/sites/blog.starfall.love/log/access.log;
error_log /www/sites/blog.starfall.love/log/error.log;
access_by_lua_file /www/common/waf/access.lua;
set $RulePath /www/sites/blog.starfall.love/waf/rules;
set $logdir /www/sites/blog.starfall.love/log;
set $redirect on;
set $attackLog on;
set $CCDeny on;
set $urlWhiteAllow on;
set $urlBlockDeny off;
set $argsDeny off;
set $postDeny off;
set $cookieDeny on;
set $fileExtDeny on;
set $ipBlockDeny off;
set $ipWhiteAllow off;
location ~ /.well-known/acme-challenge {
allow all;
root /usr/share/nginx/html;
return 301 https://blog.starfall.love;
}
location /console/setup {
#deny all;
return 404;
}
include /www/sites/blog.starfall.love/proxy/*.conf;
limit_conn perserver 300;
limit_conn perip 10;
limit_rate 512k;
include /www/sites/blog.starfall.love/rewrite/blog.starfall.love.conf;
location ~ .*\.(js|css|png|jpg|jpeg|gif|ico|bmp|swf|eot|svg|ttf|woff|woff2|gz|zip|rar|7z|setup)$ {
expires 30d;
log_not_found off;
valid_referers none blog.starfall.love 127.0.0.1;
if ($invalid_referer) {
return 404;
access_log off;
}
}
}
如果修改配置后,远程打开网页没有立刻生效,可以清除掉网页的cookie和图片缓存再试试
frpc转发
本文基于openFRP的香港线路,因为个人服务器难以通过大陆的备案,域名备案也很麻烦。首页 | OpenFrp管理面板
首先在首页 | OpenFrp管理面板开通两个香港线路,都对应这本地的2086端口(即放置halo博客的端口),两个线路分别穿透http和https流量。
下载openfrp的linux客户端,写一个frpc.ini文件,和下载的客户端放在一个目录中,frpc.ini的内容如下:
[common]
#这部分的配置需要根据自己开通的隧道在openfrp的配置面板获取
[http_blog]
type = http
local_ip = 127.0.0.1
local_port = 2086 #被转发到公网的http端口
custom_domains = blog.starfall.love
use_encryption = true #frp加密算法
use_compression = true #frp压缩算法
[https_blog] #将http转发为https
type = https
local_ip = 127.0.0.1
local_port = 2086
custom_domains = blog.starfall.love
plugin = https2http #FRP的http转https服务
plugin_local_addr = 127.0.0.1:2086
plugin_host_header_rewrite = 127.0.0.1
plugin_crt_path = /home/yxl/frp_server/blog/blog.starfall.love_bundle.pem
plugin_key_path = /home/yxl/frp_server/blog/blog.starfall.love.key #上面下载的Nginx证书文件里面解压出来的pem和key文件的路径
plugin_header_X-From_Where = frp
use_encryption = true
随后在配置文件的同一目录下启动frpc
./frpc_linux_amd64
看到隧道启动成功即可链接https://blog.starfall.love/。
frpc强制跳转https
也很简单,在https的设置里加一句即可
force_https = true
全https配置:
[https]
type = https
local_ip = 127.0.0.1
local_port = 2086
custom_domains = blog.starfall.love
plugin = https2http
plugin_local_addr = 127.0.0.1:2086
plugin_host_header_rewrite = 127.0.0.1
plugin_crt_path = /home/yxl/frp_server/blog/blog.starfall.love_bundle.pem
plugin_key_path = /home/yxl/frp_server/blog/blog.starfall.love.key
plugin_header_X-From_Where = frp
use_encryption = true
force_https = true
如果这么配置的话,把http隧道删了也不会影响访问。所以总结来说,如果服务器没有公网ip,最好直接用frpc发布https的网站,同样可以正常使用证书来进行加密。如果没有证书,启用auto_tlspx也可以打开https加密。
将网站加入baidu和google收录
首先在腾讯云dnspod打开搜索优化:点击域名名称-高级选项-搜索优化
百度和谷歌申请教程:
Hexo 博客提交百度、谷歌搜索引擎收录 - 知乎 (zhihu.com)
html标签注入位置:
更多推荐
所有评论(0)