需求场景:由于服务器只有80端口可供外网访问,但需要部署两台tomcat来运行两个不同的项目,所以选择了nginx做反向代理。项目1放在tomcat1中,项目2放在tomcat2中,两个tomcat放在同一台服务器上,需要共享80端口访问

注意:这里和集群部署是不同的,集群部署是一个项目放在多个tomcat中。

(例如:中为集群部署)

nginx反向代理的意思大概如下图():

nginx 一个server 多个端口配置 nginx多个server共用端口_html

 

多个用户请求先经过nginx服务器,然后由nginx服务器进行分发,将请求根据配置需要分发给指定的tomcat服务器,Tomcat根本不知道请求的来源,只知道所有的请求都是来源于Nginx,不知道真正的来源。

一,下载安装

下载地址:http://nginx.org/en/download.html

解压打开,可直接双击nginx启动服务

nginx 一个server 多个端口配置 nginx多个server共用端口_html_02

在浏览器输入http://localhost,如果页面显示如下,则服务启动成功

nginx 一个server 多个端口配置 nginx多个server共用端口_html_03

二,准备好要部署的项目

nginx 一个server 多个端口配置 nginx多个server共用端口_html_04

 

这是由maven构建的两个打包方式为war的项目。

三,部署项目到tomcat(参考)

       首先我们把web工程打包成war。右键项目,选择Export ,然后web-----WAR file -----next-----Browse(选择保存的目录),为了方便我们保存到桌面即可,然后选择完成。

       因为我们是需要搭建tomcat集群,所以我们至少需要两个tomcat,我们把tomcat再复制一份就行

      

nginx 一个server 多个端口配置 nginx多个server共用端口_html_05

这个时候两个tomcat的端口还是一样的,我问需要修改其中一个tomcat的端口,那个都行。例如我们修改副本那个tomcat,进入conf目录,编辑server.xml,修改以下三处即可(看行号)。

nginx 一个server 多个端口配置 nginx多个server共用端口_nginx_06

 

nginx 一个server 多个端口配置 nginx多个server共用端口_nginx_07

 

nginx 一个server 多个端口配置 nginx多个server共用端口_html_08

 

原来这三处的端口分别是8005,8080,8009,我们都在此基础上加1。然后把刚才打包的ocOperator.war和ocPortal.war分别复制到两个tomcat的webapps目录下即可。然后启动两个tomcat,运行tomcat的bin目录下的startup.bat文件,把两个tomcat都启动后,在浏览器分别访问http://localhost:8080/ocPortal/和http://localhost:8081/ocOperator/能够看到我们的项目主页

 

nginx 一个server 多个端口配置 nginx多个server共用端口_html_09

               

nginx 一个server 多个端口配置 nginx多个server共用端口_nginx_10

四,使用ngnix代理

进入nginx-1.15.12\conf目录,我们需要配置一些内容。

#一个server只能监听一个端口号
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        
        location / { 
       root html; 
       index index.html index.htm; 
      }

       location /ocPortal{   #配置访问路径
       proxy_pass http://localhost:8080/ocPortal;  #设置对应tomcat端口跳转路径 
       proxy_set_header Host $host; 
       proxy_set_header X-Real-IP $remote_addr; 
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
       client_max_body_size 100m; 
       root html; 
       index index.html index.htm; 
     }

     location /ocOperator{   #配置访问路径
       proxy_pass http://localhost:8081/ocOperator;   #设置对应tomcat端口跳转路径
       proxy_set_header Host $host; 
       proxy_set_header X-Real-IP $remote_addr; 
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
       client_max_body_size 100m; 
       root html; 
       index index.html index.htm; 
     }

这样就可以使用http://localhost:8080/ocPortal/和http://localhost:8080/ocOperator/分别访问服务。