多域名一个公网ip多内网应用服务同时使用80端口

多域名一个公网ip多内网应用服务同时使用80端口,第1张

一、需要使用工具及资源 需要的资源:一个公网Ip,多个二级域名,多个内网应用软件工具有:内网穿透工具 frp,以及Nginx,直接点击链接,安装对应的软件即可 二、 *** 作理论简述 1、使用frp内网穿透,将内网不同应用映射到公网地址上 2、利用frp的 自定义域名访问内网的 Web 服务功能,将内网不同应用映射到不同的二级域名上 3、利用 Nginx 的反向代理功能,将不同域名的代理指向 frp服务的http端口 三、实际 *** 作

我使用的环境是 一个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.comtest2.abc.com ,查看应用服务器是穿透出外网地址,访问成功,代表配置完成 HTTPS

frp除了http外还有https,两者是类似的,不同在于Ngixn上,反向代理443端口,开启ssl,以及在nginx上配置多个域名443端口的访问

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/949393.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-18
下一篇 2022-05-18

发表评论

登录后才能评论

评论列表(0条)

保存