我使用的环境是 一个window公网服务器,多个内网windows服务器,
第一步:公网服务器安装 Frp 和 Nginx,以及配置 安装 Frp,下载 Frp,下载后将压缩包分别上传至windows公网服务器上及内网服务器上,在公网服务器上解压,进入解压目录,找到 frps.ini,进行以下配置:[common]
# 详细的公网配置文档 https://gofrp.org/docs/
# frp监听的端口,用作服务端和客户端通信隧道
bind_port = 7000
# 服务端通过此端口接监听和接收公网用户的http请求
vhost_http_port = 7071
# 服务端通过此端口接监听和接收公网用户的https请求
vhost_https_port = 7072
# frp提供了一个控制台,可以通过这个端口访问到控制台。可查看frp当前有多少代理连接以及对应的状态
dashboard_port = 7500
# 服务端的subdomain_host需要和客户端配置文件中的subdomain、local_port 、local_ip配合使用,
# 可通过{subdomain}.{subdomain_host} 的域名格式来访问自己本地的 web 服务。
# 假如服务端的subdomain_host为abc.com,客户端某个配置组中的
# subdomain为a,local_port为8585,local_ip为:192.168.1.2
# 则:访问 a.abc.com ,等同于访问本地的192.168.1.2:8585,如果loca_ip没有配置就是:localhost:8585
subdomain_host = abc.com
公网服务器启动 Frp 服务端,在当前目录打开命令行执行以下命令:frps.exe -c frps.ini
启动后不要关闭该命令行,关闭即关闭 FRP服务安装nginx,下载Nginx,选择windows 稳定版下载,解压即可配置Nginx,进入解压目录,找到conf/nginx.conf
,打开nginx.conf 文件 进行以下配置:
server {
listen 80;
server_name *.dev.msh.com dev.msh.com;
location / {
# 7071端口即为frp监听的http端口
proxy_pass http://127.0.0.1:7071;
proxy_set_header Host $host:80;
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";
proxy_connect_timeout 7d;
proxy_send_timeout 7d;
proxy_read_timeout 7d;
}
# 防止爬虫抓取
if ($http_user_agent ~* "360Spider|JikeSpider|Spider|spider|bot|Bot|2345Explorer|curl|wget|webZIP|qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot|NSPlayer|bingbot")
{
return 403;
}
}
以上配置完成之后,启动nginx,双击nginx.exe即可,如果已启动,执行 nginx -s reload
即可使更新后配置文件生效。
第二步:公网服务器开启防火墙端口
这里需要开启的防火墙端口有 80、7000 和 7001。具体开启防火墙方式这里不具体说明
第三步:客户端的Frp安装及配置 这里使用上述已下载的frp安装包,放到一个内网服务器上,然后解压,进入解压目录,找到 frpc.ini,进行以下配置:# 注意这里配置的是 frpc.ini 上述第一步使用的是 frps.ini
[common]
# 部署frp服务端的公网服务器的ip
server_addr = XXX.XXX.XXX.XXX
# 和服务端的bind_port保持一致
server_port = 7000
# 代理服务一 ,[]内的代理服务名称在全局范围内确保唯一,每个人的每个代理服务不能重名,
# 否则会影响正常使用。
[http-test]
type = http
# local_port代表你想要暴露给外网的本地web服务端口
local_port = 8585
# subdomain 在全局范围内要确保唯一,每个代理服务的subdomain不能重名,否则会影响正常使用。
# 客户端的subdomain需和服务端的subdomain_host配合使用
subdomain = test
# 代理服务二 ,各项配置说明请参考配置组一
[http-test2]
type = http
local_port = 8686
# 代理访问内网其他ip应用服务
local_ip=192.168.3.2
subdomain = test2
内网服务器启动 Frp 客户端,在当前目录打开命令行执行以下命令:frpc.exe -c frpc.ini
启动后不要关闭该命令行,关闭即关闭 FRP服务,如果窗口提示:start proxy success
,代表frp服务端和frp客户端的通信隧道建立成功测试访问:分别访问test.abc.com
和 test2.abc.com
,查看应用服务器是穿透出外网地址,访问成功,代表配置完成
HTTPS
frp除了http外还有https,两者是类似的,不同在于Ngixn上,反向代理443端口,开启ssl,以及在nginx上配置多个域名443端口的访问
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)