nginx+tomcat实现多级反向代理的示例代码
作者:俗_人
本文介绍在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地址 |
---|---|
pc | 192.168.107.192 |
nginx | 192.168.107.10 |
tomcat | 192.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 多级反向代理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!