相信能找到这个文章的你也踩了不少坑,网上一些文章基本上都是穿透的80端口,穿透443端口或多或少的都有些问题。大部分小伙伴只一台服务器,并且已经部署过网站,,如果同时使用 frp 服务的话就会存在共享80/443
端口的问题,本文将介绍在宝塔配置 nginx 和 frp 共享 80/443
端口和泛域名支持的方法,基本思路通过服务端Nginx(使用的80/443
)来配置域名监听并且反向代理到frp所在的http和https端口(frp服务端端口不是 80/443
,要改为其它端口如 808/809
,本例80用的808
,443用的是809
),然后frp服务端穿透到frp客户端实现网络访问,本文采用的是tcp转发的方式,没使用frp的 http
和 https
为什么这么干呢,是因为我们要使用80/443
二个端口的穿透,而frp只支持单个端口的泛域名转发,具体请看我提的 Issues ,并且frp官方文档上说http
和https
的实现底层也是tcp。废话不多说直接开始
Frp服务端配置
[common]
# 如果有多个IP,可以选择绑定到不同的ip上
bind_addr = 0.0.0.0
bind_port = 7000
# udp port to help make udp hole to penetrate nat
bind_udp_port = 7001
# udp port used for kcp protocol, it can be same with 'bind_port'
# if not set, kcp is disabled in frps
kcp_bind_port = 7000
# 虚拟主机配置,不能和系统中已监听的端口冲突。http和https可以设置成同一个
#vhost_http_port = 908 #如果采用单端口泛域名转发可以采集此方式
#vhost_https_port = 909 #如果采用单端口泛域名转发可以采集此方式
allow_ports = 808,809 #808为http端口,809为https端口
# 服务端web面板
dashboard_addr = 0.0.0.0
dashboard_port = 7500
# 设置用户名密码,默认都是admin,请注意做修改
dashboard_user = admin
dashboard_pwd = 123qwe
# 普罗米修斯运维服务,go语言相关监控,可以关闭
enable_prometheus = false
# 设置日志文件地址
log_file = /var/log/frps.log
# trace, debug, info, warn, error
log_level = info
log_max_days = 3
# 最新版本支持的验证方式比较多,这里还是选用token模式
# AuthenticationMethod specifies what authentication method to use authenticate frpc with frps.
# If "token" is specified - token will be read into login message.
authentication_method = token
# AuthenticateHeartBeats specifies whether to include authentication token in heartbeats sent to frps. By default, this value is false.
authenticate_heartbeats = false
# AuthenticateNewWorkConns specifies whether to include authentication token in new work connections sent to frps. By default, this value is false.
authenticate_new_work_conns = false
# auth token 相当于密码,请注意保护
token = 123qwe
Frp客户端配置
[common]
server_addr = frp.abc.com #你的服务器IP或域名
server_port = 7000
token = 123qwe
[webhttp]
type = tcp
local_ip = 127.0.0.1
local_port = 80 #本地端口
remote_port = 808 #服务器端口
[webhttps]
type = tcp
local_ip = 127.0.0.1
local_port = 443 #本地端口
remote_port = 809 #服务器端口
宝塔服务器端Nginx配置
server
{
listen 80;
server_name *.abc.com;
# return 301 https://$host$request_uri; #取消此注释可以使80自动跳转443,取消注释时别忘了注释location节点
location /
{
proxy_pass http://$host:808;
#proxy_redirect http://$host/ http://$http_host/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
resolver 114.114.114.114;
}
}
server
{
listen 443 ssl http2;
server_name *.abc.com;
ssl_certificate /www/server/nginx/conf/ssl/fullchain51.pem;
ssl_certificate_key /www/server/nginx/conf/ssl/privkey51.pem;
location /
{
proxy_pass https://$host:809; #通过域名访问frp服务
#proxy_redirect https://$host/ https://$http_host/;
proxy_ssl_server_name on;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
resolver 114.114.114.114;
}
}
宝塔客户端Nginx配置
就按宝塔正常流程进行网站的新建和管理就可以,如果使用多域名的话,要在宝塔Nginx服务端先反代相关的域名。
特别说明
如果此文对你有帮助,请关注留言,转发请标记原文地址,谢谢。
感谢 解决了问题
《萨拉尔》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/9415.html
《情与缘》国产剧高清在线免费观看:https://www.jgz518.com/xingkong/40720.html
你的文章让我感受到了正能量,非常棒! http://www.55baobei.com/AewKexyY99.html