nginx+tomcat实现多级反向代理的示例代码

 更新时间:2025年07月15日 10:09:39   作者:俗_人  
本文介绍在CentOS系统下安装Tomcat、配置虚拟主机多级目录,并通过Nginx反向代理将请求转发至指定IP,构建多级代理拓扑实现负载均衡与访问控制,感兴趣的可以了解一下

1、tomcat的安装 (centos版本)

1.1 安装Java依赖环境

[root@localhost ~]# rz -E
rz waiting to receive.
[root@localhost ~]# ls
anaconda-ks.cfg       jdk-8u201-linux-x64.rpm  模板  图片  下载  桌面
initial-setup-ks.cfg  公共                     视频  文档  音乐
[root@localhost ~]# rpm -ivh jdk-8u201-linux-x64.rpm 

#安装成功
[root@localhost ~]# cd /usr/java/
[root@localhost java]# ls
default  jdk1.8.0_201-amd64  latest
[root@localhost java]# 


#添加环境变量
[root@localhost java]# vim /etc/profile

#添加内容
##
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
##
[root@localhost java]# source /etc/profile
[root@localhost java]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
#添加成功
[root@localhost java]# 

1.2 安装tomcat

具体操作步骤如下

[root@localhost opt]# rz -E
rz waiting to receive.
#拖入相关安装包
[root@localhost opt]# ls
apache-tomcat-9.0.16.tar.gz  rh
[root@localhost opt]# tar -xf apache-tomcat-9.0.16.tar.gz 
#解压
[root@localhost opt]# ls
apache-tomcat-9.0.16  apache-tomcat-9.0.16.tar.gz  rh
[root@localhost opt]# cp -r apache-tomcat-9.0.16 /usr/local/tomcat
#复制到系统路径
[root@localhost opt]# cd /usr/local/tomcat/
[root@localhost tomcat]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
[root@localhost tomcat]# cd bin/
[root@localhost bin]# ls
bootstrap.jar       commons-daemon-native.tar.gz  makebase.sh       tomcat-juli.jar
catalina.bat        configtest.bat                setclasspath.bat  tomcat-native.tar.gz
catalina.sh         configtest.sh                 setclasspath.sh   tool-wrapper.bat
catalina-tasks.xml  daemon.sh                     shutdown.bat      tool-wrapper.sh
ciphers.bat         digest.bat                    shutdown.sh       version.bat
ciphers.sh          digest.sh                     startup.bat       version.sh
commons-daemon.jar  makebase.bat                  startup.sh

[root@localhost bin]# /usr/local/tomcat/bin/startup.sh 
#以catlina的方式启动
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]# /usr/local/tomcat/bin/shutdown.sh 
#以catlina的方式关闭
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@localhost bin]# 

#创建tomcat用户,更改其属组
[root@localhost bin]# useradd -s /sbin/nologin tomcat
[root@localhost bin]# chown -R tomcat:tomcat /usr/local/tomcat
[root@localhost bin]# 

#配置service文件,可以使用systemctl托管
[root@localhost system]# vim tomcat.service 
[root@localhost system]# systemctl daemon-reload 
[root@localhost system]# systemctl restart tomcat
[root@localhost system]# systemctl status tomcat
#service文件配置
[Unit]
Description=Tomcat
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target

#配置软链接
[root@localhost system]# ln -s /usr/local/tomcat/bin/*     /usr/bin

安装完成

2、tomcat的虚拟主机的配置

2.1 配置多级目录

[root@localhost data]# echo "abc" > abc/ROOT/index.html
[root@localhost data]# echo "def" > def/ROOT/index.html
[root@localhost data]# echo "xyz" > xyz/ROOT/index.html
[root@localhost data]# tree
.
├── abc
│?? └── ROOT
│??     └── index.html
├── def
│?? └── ROOT
│??     └── index.html
└── xyz
    └── ROOT
        └── index.html

#找到主站点配置目录
[root@localhost data]# cd /usr/local/tomcat/
[root@localhost tomcat]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
[root@localhost tomcat]# cd conf/
[root@localhost conf]# ls
Catalina             context.xml           logging.properties  tomcat-users.xsd
catalina.policy      jaspic-providers.xml  server.xml          web.xml
catalina.properties  jaspic-providers.xsd  tomcat-users.xml
[root@localhost conf]# vim server.xml 
[root@localhost conf]# 

#添加三个站点目录
      <Host name="www.abc.com"  appBase="/data/abc" unpackWARs="true" autoDeploy="true">
      </Host>

      <Host name="www.def.com"  appBase="/data/def" unpackWARs="true" autoDeploy="true">
      </Host>

      <Host name="www.xyz.com"  appBase="/data/xyz" unpackWARs="true" autoDeploy="true">
      </Host>

#测试访问虚拟主机 -- 成功
[root@localhost data]# curl www.abc.com:8080
abc
[root@localhost data]# curl www.def.com:8080
def
[root@localhost data]# curl www.xyz.com:8080
xyz

3、利用nginx的反向代理实现将转发指向一个虚拟机

机器IP地址
pc192.168.107.192
nginx192.168.107.10
tomcat192.168.107.12

3.1 nginx服务器的配置

#安装nginx(略)
[root@localhost ~]# vim /etc/nginx/nginx.conf
#加入下面这三行(server模块)
location / {
        proxy_pass  http://www.def.com:8080/;
    }

vim /etc/hosts
192.168.107.12  www.abc.com  www.def.com  www.xyz.com

3.2 客户端配置

vim /etc/hosts
192.168.107.10  www.abc.com  www.def.com   www.xyz.com

#检测访问

[root@localhost ~]# curl 192.168.107.10
abc
[root@localhost ~]# curl 192.168.107.10
abc
[root@localhost ~]# curl 192.168.107.10
abc
[root@localhost ~]# curl 192.168.107.10
abc
[root@localhost ~]# curl 192.168.107.10
abc
[root@localhost ~]# curl 192.168.107.10
abc
[root@localhost ~]# curl 192.168.107.10
def
[root@localhost ~]# curl 192.168.107.10
def
[root@localhost ~]# curl 192.168.107.10
def
[root@localhost ~]# curl 192.168.107.10
def
[root@localhost ~]# curl 192.168.107.10
def
[root@localhost ~]# curl 192.168.107.10
def
#成功

4、 反向多级代理

拓扑图如下

代理服务器操作

yum install  nginx -y
systemctl  start  nginx
vim  /etc/nginx/nginx.conf

  upstream  web {
    server 192.168.91.101;
    server 192.168.91.102;

   }

location  / {
        proxy_pass  http://web/;

}

nginx  -s reload

nginx 1 服务器

yum install  nginx -y
systemctl  start  nginx

vim  /etc/nginx/nginx.conf

 location ~  \.(jpg|html|png|css)$ {
        root         /usr/share/nginx/html;
         }
        location ~  \.jsp$ {
         proxy_pass http://192.168.91.103:8080;
         }

echo  7-2  > /usr/share/nginx/html/index.html

nginx 2 服务器

yum install  nginx -y
systemctl  start  nginx

vim  /etc/nginx/nginx.conf

 location ~  \.(jpg|html|png|css)$ {
        root         /usr/share/nginx/html;
         }
        location ~  \.jsp$ {
         proxy_pass http://192.168.91.105:8080;
         }

echo  7-3  > /usr/share/nginx/html/index.html

tomcat 1 服务器

安装tomcat

echo 7-4  > /usr/local/tomcat/webapps/ROOT/test.jsp

tomcat 2 服务器

安装tomcat

echo 7-5  > /usr/local/tomcat/webapps/ROOT/test.jp

结果展示

到此这篇关于nginx+tomcat实现多级反向代理的示例代码的文章就介绍到这了,更多相关nginx tomcat 多级反向代理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Nginx实现防盗链的多种方式

    Nginx实现防盗链的多种方式

    防盗链指的是防止其他网站未经许可直接引用你的资源(如图片、音视频文件、文档等),这样做不仅能有效节约带宽,还能防止未经授权的内容被滥用,本文给大家介绍了Nginx实现防盗链的多种方式,需要的朋友可以参考下
    2025-01-01
  • Nginx SSL/TLS配置的实现

    Nginx SSL/TLS配置的实现

    Nginx支持SSL/TLS协议,用于加密HTTPS通信,本文主要介绍了Nginx SSL/TLS配置的实现,具有一定的参考价值,感兴趣的可以了解一下
    2025-02-02
  • Nginx location匹配规则的方法示例

    Nginx location匹配规则的方法示例

    这篇文章主要介绍了Nginx location匹配规则的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • 简单谈谈Nginx基础知识入门

    简单谈谈Nginx基础知识入门

    Nginx(engine x)是一个高性能的HTTP服务器(其实不止HTTP服务器),一般主要用作负载均衡和反向代理,今天我们来简单学习下他的基础配置知识
    2017-08-08
  • 详解Nginx如何处理WebSocket连接

    详解Nginx如何处理WebSocket连接

    在当今互联网的世界中,实时通信变得越来越重要,WebSocket 作为一种实现实时双向通信的技术,正被广泛应用于各种场景,而 Nginx 作为一款高性能的 Web 服务器和反向代理服务器,在处理 WebSocket 连接方面也有着出色的表现,本文介绍了Nginx如何处理WebSocket连接
    2024-07-07
  • Nginx实现三种常见的虚拟主机配置方法

    Nginx实现三种常见的虚拟主机配置方法

    Nginx 是一款高性能的 Web 服务器,支持多种虚拟主机配置方式,能够根据域名、IP 或端口区分不同的站点,这种灵活性让 Nginx 成为搭建多站点服务的首选工具,本文将带你一步步实现三种常见的虚拟主机配置方法,需要的朋友可以参考下
    2025-03-03
  • Nginx启用Brotli算法压缩的示例

    Nginx启用Brotli算法压缩的示例

    这篇文章主要介绍了Nginx启用Brotli算法压缩的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Nginx的location路径与proxy_pass匹配规则说明

    Nginx的location路径与proxy_pass匹配规则说明

    这篇文章主要介绍了Nginx的location路径与proxy_pass匹配规则说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • nginx 如何配置文件上传大小

    nginx 如何配置文件上传大小

    这篇文章主要介绍了nginx 如何配置文件上传大小,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • Nginx打包RPM过程(FPM工具)

    Nginx打包RPM过程(FPM工具)

    文章介绍了在Linux系统中安装Nginx、Ruby2.6及FPM工具的完整流程,包括源码编译、依赖安装、RPM打包配置及错误处理方法,重点解决rpmbuild缺失问题
    2025-07-07

最新评论