多个web应用在同一台服务器上的部署通常使用nginx+tomcat的架构。
niginx
nginx扮演的角色是反向代理,通常称nginx为反向代理服务器。
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。如图:
作为服务器,nginx不止可以转发请求,也可以直接响应请求,即当请求的目标是静态文件时,nginx可以直接将该静态文件发送给客户端。
nginx虚拟主机
在nginx上可以配置多个server,每个server即一个虚拟主机,当nginx接收到请求,获取该请求中的host请求头,将host值与多个server的server_name进行匹配,由匹配成功的那个server来处理请求,然后将请求转发到server中指定不同的服务器。不同的server可以指定不同的tomcat或其它服务器,由服务器来处理请求。当只有一个服务器,所有的请求转发到同一个端口;当有多个服务器时,这些服务器对应的监听不同的端口,则请求根据配置转发到指定的端口,虚拟主机的作用真正发挥。
tomcat
tomcat是一种web容器,通常也叫作服务器,可以接收请求,实现应用程序中的逻辑并将处理结果返回。java范围内主流的web容器还有jboss,jetty等。
tomcat虚拟主机
tomcat上可以配置多个host,每个host对应一web个应用。当tomcat接收到请求时,也要获取host请求头,并将头的值与host_name进行匹配,由匹配成功的host指定的web应用处理请求。tomcat虚拟机使一个comcat可以同时运行多个应用,只需要启动一个JVM,节省系统资源。