需求场景:由于服务器只有80端口可供外网访问,但需要部署两台tomcat来运行两个不同的项目,所以选择了nginx做反向代理。项目1放在tomcat1中,项目2放在tomcat2中,两个tomcat放在同一台服务器上,需要共享80端口访问
注意:这里和集群部署是不同的,集群部署是一个项目放在多个tomcat中。
(例如:中为集群部署)
nginx反向代理的意思大概如下图():
多个用户请求先经过nginx服务器,然后由nginx服务器进行分发,将请求根据配置需要分发给指定的tomcat服务器,Tomcat根本不知道请求的来源,只知道所有的请求都是来源于Nginx,不知道真正的来源。
一,下载安装
下载地址:http://nginx.org/en/download.html
解压打开,可直接双击nginx启动服务
在浏览器输入http://localhost,如果页面显示如下,则服务启动成功
二,准备好要部署的项目
这是由maven构建的两个打包方式为war的项目。
三,部署项目到tomcat(参考)
首先我们把web工程打包成war。右键项目,选择Export ,然后web-----WAR file -----next-----Browse(选择保存的目录),为了方便我们保存到桌面即可,然后选择完成。
因为我们是需要搭建tomcat集群,所以我们至少需要两个tomcat,我们把tomcat再复制一份就行
这个时候两个tomcat的端口还是一样的,我问需要修改其中一个tomcat的端口,那个都行。例如我们修改副本那个tomcat,进入conf目录,编辑server.xml,修改以下三处即可(看行号)。
原来这三处的端口分别是8005,8080,8009,我们都在此基础上加1。然后把刚才打包的ocOperator.war和ocPortal.war分别复制到两个tomcat的webapps目录下即可。然后启动两个tomcat,运行tomcat的bin目录下的startup.bat文件,把两个tomcat都启动后,在浏览器分别访问http://localhost:8080/ocPortal/和http://localhost:8081/ocOperator/能够看到我们的项目主页
四,使用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/分别访问服务。