Nginx+Tomcat實(shí)現(xiàn)負(fù)載均衡、動(dòng)靜分離的原理解析
一、Nginx 負(fù)載均衡實(shí)現(xiàn)原理
1、Nginx 實(shí)現(xiàn)負(fù)載均衡是通過(guò)反向代理實(shí)現(xiàn)
反向代理(Reverse Proxy) 是指以 代理服務(wù)器(例:Nginx) 來(lái)接受 internet 上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器(例:Tomcat),并將從服務(wù)器上得到的結(jié)果返回給 internet 上請(qǐng)求連接的客戶(hù)端,此時(shí)代理服務(wù)器(例:Nginx)對(duì)外就表現(xiàn)為一個(gè)反向代理服務(wù)器。
我們從客戶(hù)端的視野來(lái)看,實(shí)際上客戶(hù)端并不知道真實(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ù)池名
作用:配置將訪問(wèn)請(qǐng)求轉(zhuǎn)發(fā)給后端服務(wù)器池的服務(wù)器處理
二、Nginx 動(dòng)靜分離實(shí)現(xiàn)原理
1、動(dòng)靜分離原理
服務(wù)端接收來(lái)自客戶(hù)端的請(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)勢(shì)
Nginx 處理靜態(tài)頁(yè)面的效率遠(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 #腳本說(shuō)明:編譯安裝nginx服務(wù) #注意:使用前請(qǐng)將nginx-1.12.0.tar.gz放入/opt目錄下 #關(guān)閉防火墻 systemctl stop firewalld systemctl disable firewalld setenforce 0 #安裝所需開(kāi)發(fā)包和編譯環(huán)境、編譯器 yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make #創(chuàng)建程序用戶(hù),便于準(zhǔn)確控制訪問(wèn) useradd -M -s /sbin/nologin nginx #解壓安裝包 cd /opt tar zxvf nginx-1.12.0.tar.gz -C /opt/ #編譯安裝nginx;指定安裝路徑、指定用戶(hù)名、組名、啟用模塊以支持統(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)及開(kāi)啟服務(wù)、開(kāi)啟開(kāi)機(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)頁(yè)面 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)頁(yè)面 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)頁(yè)面 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)頁(yè)面和靜態(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)頁(yè)面請(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、訪問(wèn)測(cè)試
測(cè)試靜態(tài)頁(yè)面效果
瀏覽器訪問(wèn) http://192.168.109.7/
瀏覽器訪問(wèn) http://192.168.109.7/long.jpg
測(cè)試負(fù)載均衡效果,不斷刷新瀏覽器測(cè)試
瀏覽器訪問(wèn) 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)文章希望大家以后多多支持腳本之家!
- Nginx實(shí)現(xiàn)動(dòng)靜分離的示例代碼
- Nginx七層負(fù)載均衡之動(dòng)靜分離思路詳解
- nginx實(shí)現(xiàn)動(dòng)靜分離的案例詳解
- 關(guān)于Nginx動(dòng)靜分離詳解以及配置
- Nginx?Tomcat負(fù)載均衡動(dòng)靜分離原理解析
- 使用nginx實(shí)現(xiàn)動(dòng)靜分離
- Nginx動(dòng)靜分離配置實(shí)現(xiàn)與說(shuō)明
- Nginx+Tomcat負(fù)載均衡及動(dòng)靜分離群集的實(shí)現(xiàn)
- nginx實(shí)現(xiàn)動(dòng)靜分離的方法示例
- Nginx動(dòng)靜分離實(shí)現(xiàn)案例代碼解析
- Nginx動(dòng)靜分離的示例代碼
相關(guān)文章
nginx禁止dedecms目錄php執(zhí)行權(quán)限
nginx禁止dedecms目錄php執(zhí)行權(quán)限,找到配置fastcgi.conf文件,一般在/usr/local/nginx/conf/下面,修改如下2014-01-01深入理解nginx如何實(shí)現(xiàn)高性能和可擴(kuò)展性
這篇文章主要介紹了深入理解nginx如何實(shí)現(xiàn)高性能和可擴(kuò)展性,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05nginx進(jìn)行端口轉(zhuǎn)發(fā)的實(shí)現(xiàn)
本文主要介紹了nginx進(jìn)行端口轉(zhuǎn)發(fā)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03windows系統(tǒng)安裝配置nginx環(huán)境
這篇文章介紹了windows系統(tǒng)安裝配置nginx環(huán)境的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06nginx安裝時(shí),make編譯可能會(huì)出現(xiàn)的錯(cuò)誤問(wèn)題
這篇文章主要介紹了nginx安裝時(shí),make編譯可能會(huì)出現(xiàn)的錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06