用frp实现80端口不同域名,访问不同应用

用frp代理实现80端口不同域名,访问不同应用

参考博文

tomcat8080端口多应用
frp github文档

需求

  1. 今天早上项目经理,就问我能不能使用80端口不同域名访问,并且通过香港的服务器代理内陆阿里云服务器

在这里插入图片描述

模拟测试

tomcat 本地8080端口开启3个应用

  1. 应用名
    x.web1.com
    x.web2.com
    x.web3.com
  2. 准备tomcat
    1. webapp添加文件 web1 web2 web3
      在这里插入图片描述

    2. 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

    3. 添加web.xml文件

      1. web1 web2 web3 下新建WEB-INFO目录
        在这里插入图片描述

      2. 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>  
        
    4. 结果演示
      在这里插入图片描述

    5. 配置tomcat配置文件

      1. 向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>
        
        
    6. 注释掉ROOT目录对应的host
      在这里插入图片描述

    7. 启动tomcat

  3. 本地测试效果
    1. 准备:
      修改本机下 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

      在这里插入图片描述

    2. 测试
      curl x.web1.com:8080
      在这里插入图片描述
      curl x.web2.com:8080

      在这里插入图片描述
      curl x.web3.com:8080
      在这里插入图片描述

    3. 测试通过,删除本地hosts添加内容
      vim /etc/hosts
      在这里插入图片描述

配置代理服务器

  1. 注意: 代理服务要开发7000 8080端口,对应安全组也要开放
    本地服务器要开放8080端口,这里就不演示开放端口了
  2. 下载frp:github路径
    1. 我用的版本:v0.21.0

    2. 对应操作系统下载对应系统的,我代理服务器和本地服务器都是centos

    3. wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz

    4. tar -zxvf frp_0.21.0_linux_amd64.tar.gz

    5. cd frp_0.21.0_linux_amd64

    6. vim frps.ini

      [common]
      # frps 启动绑定的端口号
      bind_port = 7000
      # 暴露给外网的http地址
      vhost_http_port = 8080
      # 客户端登录的token
      token=123456
      
    7. 启动: ./frps -c frps.ini
      在这里插入图片描述

配置本地服务frp客户端

  1. 下载frp同服务端,解压后

  2. 修改: 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需要修改

  3. 启动客户端:
    ./frpc -c frpc.ini
    在这里插入图片描述

最终测试

  1. 准备:

    1. 通过本地dns解析模型dns解析
      修改访问服务器的win10电脑本地hosts文件
      C:\Windows\System32\drivers\etc\hosts
      代理服务器ip地址 web1.com
      代理服务器ip地址 web2.com
      代理服务器ip地址 web3.com 
      
      在这里插入图片描述
  2. 打开浏览器:
    分别访问 web1.com:8080 web2.com:8080 web3.com:8080
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. 测试成功

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章