1、虚拟主机简介
    虚拟主机就是将一台物理服务器虚拟成多个服务器来使用,从而实现一台服务器上配置多个站点,即在一台物理机上配置多个域名,在nginx中,一个server标签就是一台虚拟主机,配置多个server标签就能虚拟出多台主机。
    nginx虚拟主机的实现方式有两种,域名虚拟方式和端口虚拟方式。域名虚拟方式是指不同的虚拟机使用不同的域名,通过不同的域名虚拟出来不同的主机。端口虚拟方式是指不同的虚拟机使用相同的域名不同的端口,通过不同的端口虚拟出不同的主机。基于端口的虚拟方式不常用。
    2、总体规划
    现在很多生活服务类网络平台都具有这样的功能:不同城市的用户可以打开不同城市专属的站点。用户首先打开的是平台总站点,然后允许用户切换到不同的城市。其实,不同的城市都是一个不同的站点。
    这里我们要实现的功能是为平台总站点,北京、上海两个城市站点分别创建一个虚拟主机。每一个虚拟主机都具有两台 Tomcat 的负载均衡主机。由于有三个站点,所以共需六台Tomcat 主机,克隆 Tomcat 主机太过麻烦,所以这六台 Tomcat 我们使用一台主机实现。在一台主机中安装六个 Tomcat,它们分别使用六个不同的端口号。
    首先要创建一个 web 工程,其中就一个 index.jsp 页面,页面除了显示当前城市外,还要显示城市切换的超链接。为了能够再明显的区分出当前访问的 Tomcat,再在页面中显示出当前工程所在的主机名与端口号。
    1)创建三个web项目
    直接复制前面的 web 工程,每个工程都仅需一个 JSP 即可。最终打为三个 war 包。三个工程的 JSP 页面内容各不相同。
    image.png
    entry68代表总站,bj68代表北京站,sh68代表上海站
    2)三个项目的jsp页面
    注意,JSP 文件的 EL 中通过 request 获取的是 localAddr 与 localPort。
    image.png
    image.png
    image.png
    3)修改hosts文件 其中109是nginx的地址
    image.png
    4)配置tomcat
    image.png
    第一、二台 Tomcat 中部署着 entry68.war 包;
    第三、四台 Tomcat 中部署着 bj68.war 包;
    第五、六台 Tomcat 中部署着 sh68.war 包。
    5)配置tomcat
    打开 Tomcat 安装目录下的 conf/server.xml 文件,修改三处端口号。注意不要重复
    image.png
    image.png
    6)配置虚拟主机
    image.png
    image.png

    7)将upstream和server单独配置到文件中
    vupstreams.conf
    image.png
    vhosts.conf
    image.png

    然后修改nginx配置文件,将以上两个文件引入,可以写相对地址,也可以写绝对地址
    image.png