nginx+tomcat實現(xiàn)多級反向代理的示例代碼
更新時間:2025年07月15日 10:09:39 作者:俗_人
本文介紹在CentOS系統(tǒng)下安裝Tomcat、配置虛擬主機多級目錄,并通過Nginx反向代理將請求轉(zhuǎn)發(fā)至指定IP,構(gòu)建多級代理拓撲實現(xiàn)負載均衡與訪問控制,感興趣的可以了解一下
1、tomcat的安裝 (centos版本)
1.1 安裝Java依賴環(huán)境
[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]# #添加環(huán)境變量 [root@localhost java]# vim /etc/profile #添加內(nèi)容 ## 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. #拖入相關(guān)安裝包 [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 #復制到系統(tǒng)路徑 [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的方式關(guān)閉 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]# #創(chuàng)建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的反向代理實現(xiàn)將轉(zhuǎn)發(fā)指向一個虛擬機
機器 | IP地址 |
---|---|
pc | 192.168.107.192 |
nginx | 192.168.107.10 |
tomcat | 192.168.107.12 |
3.1 nginx服務(wù)器的配置
#安裝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、 反向多級代理
拓撲圖如下
代理服務(wù)器操作
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 服務(wù)器
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 服務(wù)器
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 服務(wù)器
安裝tomcat echo 7-4 > /usr/local/tomcat/webapps/ROOT/test.jsp
tomcat 2 服務(wù)器
安裝tomcat echo 7-5 > /usr/local/tomcat/webapps/ROOT/test.jp
結(jié)果展示
到此這篇關(guān)于nginx+tomcat實現(xiàn)多級反向代理的示例代碼的文章就介紹到這了,更多相關(guān)nginx tomcat 多級反向代理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!