1、Nginx 實(shí)現負載均衡是通過(guò)反向代理實(shí)現
反向代理(Reverse Proxy) 是指以 代理服務(wù)器(例:Nginx) 來(lái)接受 internet 上的連接請求,然后將請求轉發(fā)給內部網(wǎng)絡(luò )上的服務(wù)器(例:Tomcat),并將從服務(wù)器上得到的結果返回給 internet 上請求連接的客戶(hù)端,此時(shí)代理服務(wù)器(例:Nginx)對外就表現為一個(gè)反向代理服務(wù)器。
我們從客戶(hù)端的視野來(lái)看,實(shí)際上客戶(hù)端并不知道真實(shí)的服務(wù)提供者是哪臺服務(wù)器,它只知道它請求了反向代理服務(wù)器。因此反向代理這種方式又對外隱藏了真實(shí)服務(wù)器的地址,從一定程度上降低了安全隱患。
2、Nginx 配置反向代理的主要參數 upstream 服務(wù)池名 {}
作用:配置后端服務(wù)器池,以提供響應數據
proxy_pass http:// 服務(wù)池名
作用:配置將訪(fǎng)問(wèn)請求轉發(fā)給后端服務(wù)器池的服務(wù)器處理
1、動(dòng)靜分離原理
服務(wù)端接收來(lái)自客戶(hù)端的請求中,既有靜態(tài)資源也有動(dòng)態(tài)資源,靜態(tài)資源由 Nginx 提供服務(wù),動(dòng)態(tài)資源由 Nginx 轉發(fā)至后端。
2、Nginx 靜態(tài)處理優(yōu)勢
Nginx 處理靜態(tài)頁(yè)面的效率遠高于 Tomcat 的處理能力
若 Tomcat 的請求量為1000次,則 Nginx 的請求量為6000次
Tomcat 每秒的吞吐量為0.6M,Nginx 的每秒吞吐量為3.6M
Nginx 處理靜態(tài)資源的能力是 Tomcat 處理的6倍
#!/bin/bash #腳本說(shuō)明:編譯安裝nginx服務(wù) #注意:使用前請將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ù),便于準確控制訪(fǎng)問(wèn) useradd -M -s /sbin/nologin nginx #解壓安裝包 cd /opt tar zxvf nginx-1.12.0.tar.gz -C /opt/ #編譯安裝nginx;指定安裝路徑、指定用戶(hù)名、組名、啟用模塊以支持統計狀態(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 #軟鏈接便于系統識別nginx操作命令 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #添加nginx系統服務(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 #賦權及開(kāi)啟服務(wù)、開(kāi)啟開(kāi)機自啟 chmod 754 /lib/systemd/system/nginx.service systemctl restart nginx.service systemctl enable nginx.service
2、部署兩臺 Tomcat 應用服務(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 #設置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)靜分離配置
請看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 配置
#準備靜態(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è)面請求,將 .jsp 文件請求轉發(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)圖片請求 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、訪(fǎng)問(wèn)測試
測試靜態(tài)頁(yè)面效果
瀏覽器訪(fǎng)問(wèn) http://192.168.109.7/
瀏覽器訪(fǎng)問(wèn) http://192.168.109.7/long.jpg
測試負載均衡效果,不斷刷新瀏覽器測試
瀏覽器訪(fǎng)問(wèn) http://192.168.109.7/test/index.jsp
到此這篇關(guān)于Nginx+Tomcat實(shí)現負載均衡、動(dòng)靜分離的原理解析的文章就介紹到這了,更多相關(guān)Nginx負載均衡、動(dòng)靜分離內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站