前提
一台公网服务器,有自己的域名,有域名证书
安装frp内网穿透服务端和客户端可以参考这篇文章:frp内网穿透之实现内网linux主机访问
公网服务器(frp服务端所在的服务器)安装nginx(略)
假设对域名aaa.bbb.com
开通https访问,将aaa.bbb.com
指向到公网服务器
准备完毕后,接着进行下面的配置
配置frps服务端
登录服务器,前往frps安装目录
cd /usr/local/frp_0.27.0_linux_amd64/
打开配置文件
vim frps.ini
设置虚拟端口,新增如下内容:
vhost_http_port = 7171
保存退出,重启frp
systemctl restart frps
配置Nginx代理
配置https证书,将pem,key两个证书文件放在/etc/nginx/ssl_files文件夹下,命名为server.pem
,server.key
创建nginx配置文件
cd /etc/nginx/conf.d/
新增一个conf文件(https_aaa.bbb.com.conf),输入如下配置:
# frp的接收https请求的反向代理
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
# 访问的域名
server_name aaa.bbb.com;
# 配置https证书
ssl_certificate "/etc/nginx/ssl_files/server.pem";
ssl_certificate_key "/etc/nginx/ssl_files/server.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
# 7171对应vhost_http_port
proxy_pass http://127.0.0.1:7171;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Expect for doris
proxy_set_header Expect $http_expect;
proxy_connect_timeout 7d;
proxy_send_timeout 7d;
proxy_read_timeout 7d;
}
}
其中aaa.bbb.com为需要开通https的域名
保存文件
检查Nginx配置是否正确:
nginx -t
出现success字样表示配置成功
重启nginx
nginx -s reload
配置frp客户端
假设将本地1.1.1.1开发服务器中的80端口绑定到aaa.bbb.com域名,即https://aaa.bbb.com → http://1.1.1.1:80
登录1.1.1.1服务器,安装frpc客户端
cd /usr/local/frp_0.27.0_linux_amd64/
vim frpc.ini
新增如下配置:
[http-aaa]
type = http
local_port = 80
custom_domains = aaa.bbb.com
保存,重启frpc
systemctl restart frpc
浏览器访问:https://aaa.bbb.com
进行验证