用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. 測試成功

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