Nginx+Tomcat實(shí)現(xiàn)負(fù)載均衡、動(dòng)靜分離的原理解析
一、Nginx 負(fù)載均衡實(shí)現(xiàn)原理
1、Nginx 實(shí)現(xiàn)負(fù)載均衡是通過反向代理實(shí)現(xiàn)
反向代理(Reverse Proxy) 是指以 代理服務(wù)器(例:Nginx) 來接受 internet 上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器(例:Tomcat),并將從服務(wù)器上得到的結(jié)果返回給 internet 上請(qǐng)求連接的客戶端,此時(shí)代理服務(wù)器(例:Nginx)對(duì)外就表現(xiàn)為一個(gè)反向代理服務(wù)器。
我們從客戶端的視野來看,實(shí)際上客戶端并不知道真實(shí)的服務(wù)提供者是哪臺(tái)服務(wù)器,它只知道它請(qǐng)求了反向代理服務(wù)器。因此反向代理這種方式又對(duì)外隱藏了真實(shí)服務(wù)器的地址,從一定程度上降低了安全隱患。
2、Nginx 配置反向代理的主要參數(shù) upstream 服務(wù)池名 {}
作用:配置后端服務(wù)器池,以提供響應(yīng)數(shù)據(jù)
proxy_pass http:// 服務(wù)池名
作用:配置將訪問請(qǐng)求轉(zhuǎn)發(fā)給后端服務(wù)器池的服務(wù)器處理
二、Nginx 動(dòng)靜分離實(shí)現(xiàn)原理
1、動(dòng)靜分離原理
服務(wù)端接收來自客戶端的請(qǐng)求中,既有靜態(tài)資源也有動(dòng)態(tài)資源,靜態(tài)資源由 Nginx 提供服務(wù),動(dòng)態(tài)資源由 Nginx 轉(zhuǎn)發(fā)至后端。
2、Nginx 靜態(tài)處理優(yōu)勢
Nginx 處理靜態(tài)頁面的效率遠(yuǎn)高于 Tomcat 的處理能力
若 Tomcat 的請(qǐng)求量為1000次,則 Nginx 的請(qǐng)求量為6000次
Tomcat 每秒的吞吐量為0.6M,Nginx 的每秒吞吐量為3.6M
Nginx 處理靜態(tài)資源的能力是 Tomcat 處理的6倍
三、Nginx + Tomcat 動(dòng)靜分離、負(fù)載均衡配置步驟 環(huán)境準(zhǔn)備
主機(jī) | 操作系統(tǒng) | IP地址 | 所需軟件 |
---|---|---|---|
Nginx Server | CentOS7 | 192.168.109.7 | nginx-1.12.0.tar.gz |
Tomcat Server1 | CentOS7 | 192.168.109.22 | apache-tomcat-9.0.16.tar.gz、jdk-8u201-linux-x64.rpm |
Tomcat Server2 | CentOS7 | 192.168.109.23 | apache-tomcat-9.0.16.tar.gz、jdk-8u201-linux-x64.rpm |
#!/bin/bash #腳本說明:編譯安裝nginx服務(wù) #注意:使用前請(qǐng)將nginx-1.12.0.tar.gz放入/opt目錄下 #關(guān)閉防火墻 systemctl stop firewalld systemctl disable firewalld setenforce 0 #安裝所需開發(fā)包和編譯環(huán)境、編譯器 yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make #創(chuàng)建程序用戶,便于準(zhǔn)確控制訪問 useradd -M -s /sbin/nologin nginx #解壓安裝包 cd /opt tar zxvf nginx-1.12.0.tar.gz -C /opt/ #編譯安裝nginx;指定安裝路徑、指定用戶名、組名、啟用模塊以支持統(tǒng)計(jì)狀態(tài) cd /opt/nginx-1.12.0/ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-file-aio --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module make && make install #軟鏈接便于系統(tǒng)識(shí)別nginx操作命令 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #添加nginx系統(tǒng)服務(wù) echo '[Unit] Description=nginx After=network.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStart=/usr/local/nginx/sbin/nginx ExecrReload=/bin/kill -s HUP $MAINPID ExecrStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target' > /lib/systemd/system/nginx.service #賦權(quán)及開啟服務(wù)、開啟開機(jī)自啟 chmod 754 /lib/systemd/system/nginx.service systemctl restart nginx.service systemctl enable nginx.service
2、部署兩臺(tái) Tomcat 應(yīng)用服務(wù)器
#!/bin/bash #安裝Tomcat服務(wù) #關(guān)閉防火墻 systemctl stop firewalld systemctl disable firewalld setenforce 0 #安裝JDK cd /opt rpm -ivh jdk-8u201-linux-x64.rpm #設(shè)置JDK環(huán)境變量 echo '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' > /etc/profile.d/java.sh source /etc/profile #安裝并啟動(dòng)Tomcat cd /opt tar zxvf apache-tomcat-9.0.16.tar.gz mv apache-tomcat-9.0.16 /usr/local/tomcat /usr/local/tomcat/bin/startup.sh
3、動(dòng)靜分離配置
請(qǐng)看tomcat
1)Tomcat1 server 配置
mkdir /usr/local/tomcat/webapps/test #配置動(dòng)態(tài)頁面 vim /usr/local/tomcat/webapps/test/index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>JSP test1 page</title> </head> <body> <% out.println("動(dòng)態(tài)頁面 1:www.test1.com");%> </body> </html>
#修改配置文件 vim /usr/local/tomcat/conf/server.xml <Host name="192" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" /> </Host> /usr/local/tomcat/bin/shutdown.sh /usr/local/tomcat/bin/startup.sh
2)Tomcat2 server 配置
mkdir /usr/local/tomcat/webapps/test vim /usr/local/tomcat/webapps/test/index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>JSP test2 page</title> </head> <body> <% out.println("動(dòng)態(tài)頁面 1:www.test2.com");%> </body> </html>
#修改配置文件 vim /usr/local/tomcat/conf/server.xml <Host name="192" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" /> </Host> /usr/local/tomcat/bin/shutdown.sh /usr/local/tomcat/bin/startup.sh
3)Nginx server 配置
#準(zhǔn)備靜態(tài)頁面和靜態(tài)圖片 echo '<html><body><h1>this is static</h1></body></html>' > /usr/local/nginx/html/index.html mkdir /usr/local/nginx/html/long cd /usr/local/nginx/html/long
vim /usr/local/nginx/conf/nginx.conf ...... http { ...... #gzip on; upstream tomcat_server { server 192.168.109.22:8080 weight=1; server 192.168.109.23:8080 weight=1; } server { listen 80; server_name www.long.com; #charset koi8-r; #access_log logs/host.access.log main; #配置Nginx處理動(dòng)態(tài)頁面請(qǐng)求,將 .jsp 文件請(qǐng)求轉(zhuǎn)發(fā)到Tomcat 服務(wù)器處理 location ~ .*\.jsp$ { proxy_pass http://tomcat_server; proxy_set_header HOST $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } #配置Nginx處理靜態(tài)圖片請(qǐng)求 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ { root /usr/local/nginx/html/img/; expires 10d; } location / { root html; index index.html index.htm; } systemctl restart nginx.service
4、訪問測試
測試靜態(tài)頁面效果
瀏覽器訪問 http://192.168.109.7/
瀏覽器訪問 http://192.168.109.7/long.jpg
測試負(fù)載均衡效果,不斷刷新瀏覽器測試
瀏覽器訪問 http://192.168.109.7/test/index.jsp
到此這篇關(guān)于Nginx+Tomcat實(shí)現(xiàn)負(fù)載均衡、動(dòng)靜分離的原理解析的文章就介紹到這了,更多相關(guān)Nginx負(fù)載均衡、動(dòng)靜分離內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。