用frp实现80端口不同域名,访问不同应用
用frp代理实现80端口不同域名,访问不同应用
参考博文
需求
- 今天早上项目经理,就问我能不能使用80端口不同域名访问,并且通过香港的服务器代理内陆阿里云服务器
模拟测试
tomcat 本地8080端口开启3个应用
- 应用名
x.web1.com
x.web2.com
x.web3.com - 准备tomcat
-
webapp添加文件 web1 web2 web3
-
web1 web2 web3下添加index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>ok</title> </head> <body> <h1>web1</h1> </body> </html>
web2,web3 下修改成web2 web3
-
添加web.xml文件
-
web1 web2 web3 下新建WEB-INFO目录
-
WEB-INFO下新建web.xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1" metadata-complete="true"> </web-app>
-
-
结果演示
-
配置tomcat配置文件
- 向server.conf添加内容
<Host name="x.web1.com" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="web1" /> </Host> <Host name="x.web2.com" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="web2" /> </Host> <Host name="x.web3.com" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="web3" /> </Host>
- 向server.conf添加内容
-
注释掉ROOT目录对应的host
-
启动tomcat
-
- 本地测试效果
-
准备:
修改本机下 hosts文件,添加本地dns解析
vim /etc/hosts
127.0.0.1 x.web1.com
127.0.0.1 x.web2.com
127.0.0.1 x.web2.com -
测试
curl x.web1.com:8080
curl x.web2.com:8080
curl x.web3.com:8080 -
测试通过,删除本地hosts添加内容
vim /etc/hosts
-
配置代理服务器
- 注意: 代理服务要开发7000 8080端口,对应安全组也要开放
本地服务器要开放8080端口,这里就不演示开放端口了 - 下载frp:github路径
-
我用的版本:v0.21.0
-
对应操作系统下载对应系统的,我代理服务器和本地服务器都是centos
-
wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz
-
tar -zxvf frp_0.21.0_linux_amd64.tar.gz
-
cd frp_0.21.0_linux_amd64
-
vim frps.ini
[common] # frps 启动绑定的端口号 bind_port = 7000 # 暴露给外网的http地址 vhost_http_port = 8080 # 客户端登录的token token=123456
-
启动: ./frps -c frps.ini
-
配置本地服务frp客户端
-
下载frp同服务端,解压后
-
修改: vim frpc.ini
[common] # 代理服务器ip地址 server_addr = 161.117.12.*** # 代理服务 frp Server启动端口号 server_port = 7000 # 访问服务器身份认证 token=123456 [web01] type=http # 本地的应用的端口号 local_port=8080 # 代理服务绑定dns地址 custom_domains=web1.com # 访问路径的映射,可以写成/news 只有 web1.com/news 才会从这个映射 locations=/ # 转发tomcat 对应host路径 host_header_rewrite = x.web1.com [web02] type=http local_port=8080 # 代理服务绑定dns地址 custom_domains=web2.com locations=/ # 转发tomcat 对应host路径 host_header_rewrite = x.web2.com [web03] type=http local_port=8080 # 代理服务绑定dns地址 custom_domains=web3.com locations=/ # 转发tomcat 对应host路径 host_header_rewrite = x.web3.com
注意: 如果是自己应用,对应 custom_domains和host_header_rewrite需要修改
-
启动客户端:
./frpc -c frpc.ini
最终测试
-
准备:
- 通过本地dns解析模型dns解析
修改访问服务器的win10电脑本地hosts文件
C:\Windows\System32\drivers\etc\hosts代理服务器ip地址 web1.com 代理服务器ip地址 web2.com 代理服务器ip地址 web3.com
- 通过本地dns解析模型dns解析
-
打开浏览器:
分别访问 web1.com:8080 web2.com:8080 web3.com:8080 -
测试成功