单机多应用

Multiple application on single PC

我已经在我的服务器 PC 上安装了 Tomcat 服务器 ,IP 地址为 127.0.0.1 服务器上有一个应用程序 运行ning。让应用程序的地址是:127.0.0.1:8080/first-project 现在,如果我想 运行 同一服务器上的另一个应用程序,地址将是:127.0.0.1:8080/第二个项目

我想要多个地址的多个应用程序,例如 127.0.0.1127.0.0.2

a) 这是否可能在一台 PC 上有 多个地址

b) 运行在同一台服务器上连接多个服务器的最佳做法是什么?如何做到这一点?

  1. 使用不同的 IP 地址 (127.0.0.1, 127.0.0.2)
  2. IP地址相同但端口不同(127.0.0.1:8080, 127.0.0.1:8081)
  3. 同IP不同路径(127.0.0.1/第一个,127.0.0.1/第二个)

任何资源 link 都会有所帮助。提前致谢。

您不能在一台机器上拥有多个 IP 地址,这就是端口的用途。您在 application.properties 中为应用程序分配一个端口,例如。 server.port = 8081.

现在,路径由 Controllers 及其方法分配,例如

@Controller("/first")
publc class FirstController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello world!";
    }
}

编辑 我想你是在谈论上下文路径,你也可以在 application.properties 中指定它,如下所示:server.servlet.context-path = /mycontext.

不是网络专家,但我想给你的建议如下

  1. 您可以在同一台服务器上的同一台 Tomcat Server 上安装多个应用程序 运行,但您必须设置不同的端口。示例:http://localhost:8080/http://localhost:8082/http://localhost:8084/
  2. 您可以 运行 在 Docker 中申请您的应用程序。然后您将能够 运行 您的应用程序在一个独立的容器中,它有自己的 IP address。使用 Docker,您可以使用 docker-compose 到 运行 个容器
  3. 您可以 运行 不同的应用程序 virtual machines。您将能够使用自己的 IP address 配置每个虚拟机,以便与您的 host 或从外部位置进行交互。
  4. 你可以,在一个single网卡上有多个IP address

当然每个主机可以有多个IP地址。例如,您可以通过 127.0.0.0-127.255.255.255.

范围内的任何地址引用本地计算机

您所有的配置都是可能的,在开发环境中它们之间的选择是一个品味问题。

从最小的 Tomcat Service 配置开始:

  <Service name="Catalina">
    <Connector address="127.0.0.1" port="80"/>
    <Engine name="Catalina" defaultHost="dev.localhost">
      <Host name="dev.localhost"  appBase="webapps/dev.localhost"/>
      </Host>
    </Engine>
  </Service>

您可以:

  1. 配置Tomcat通过配置两个服务来监听两个IP地址(IP-based virtual hosting):
    <Service name="Catalina-127.0.0.1">
      <Connector address="127.0.0.1" port="80"/>
      <Engine name="Catalina-127.0.0.1" defaultHost="localhost">
        <Host name="localhost"  appBase="webapps/127.0.0.1"/>
      </Engine>
    </Service>
    <Service name="Catalina-127.0.0.2">
      <Connector address="127.0.0.2" port="80"/>
      <Engine name="Catalina-127.0.0.2" defaultHost="localhost">
        <Host name="localhost"  appBase="webapps/127.0.0.2"/>
      </Engine>
    </Service>
    
  2. 配置Tomcat通过配置两个服务来监听两个不同的端口(Port-based virtual hosting):
    <Service name="Catalina-8080">
      <Connector port="8080"/>
      <Engine name="Catalina-8080" defaultHost="localhost">
        <Host name="localhost"  appBase="webapps/8080"/>
      </Engine>
    </Service>
    <Service name="Catalina-8081">
      <Connector port="8081"/>
      <Engine name="Catalina-8081" defaultHost="localhost">
        <Host name="localhost"  appBase="webapps/8081"/>
      </Engine>
    </Service>
    
  3. 使用两个虚拟主机 (Name-based virtual hosting) 配置 Tomcat:
    <Service name="Catalina">
      <Connector port="80"/>
      <Engine name="Catalina" defaultHost="host1.localhost">
        <Host name="host1.localhost"  appBase="webapps/host1.localhost"/>
        <Host name="host2.localhost"  appBase="webapps/host2.localhost"/>
      </Engine>
    </Service>
    
  4. 使用两个不同的上下文路径:只需根据上下文路径命名您的 WAR 文件,将斜杠 / 替换为散列 #.

备注:在生产服务器上:

  • 选项 1(基于 IP 的虚拟主机)通常被丢弃,因为 public IP 地址很昂贵(尽管 IPv6 地址不是...),
  • 选项 2(基于端口的虚拟主机)通常被丢弃,因为非标准端口上的网站不容易被搜索引擎机器人扫描并且可能被认为是不合法的(每个 UNIX 用户都可以 运行 端口 8080 上的服务器,端口 80 上只有 root)。如果您使用非标准端口,您可能需要使用反向代理。
  • 使用非空上下文路径 运行 您的应用程序可能是一个好习惯,这样任何阻止您的应用程序 运行 非空路径的错误(例如绝对链接不包括上下文路径)在测试期间被捕获。