springboot整合Nginx實現(xiàn)負載均衡反向代理的方法詳解
一、百度百科
Nginx是一個高性能的HTTP和反向代理web服務(wù)器,同時也提供了IMAP/POP3/SMTP服務(wù)。Nginx是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點開發(fā)的,第一個公開版本0.1.0發(fā)布于2004年10月4日。
其將源代碼以類BSD許可證的形式發(fā)布,因它的穩(wěn)定性、豐富的功能集、簡單的配置文件和低系統(tǒng)資源的消耗而聞名。
Nginx是一款輕量級的web服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,在BSD-like協(xié)議下發(fā)行。其特點是占有內(nèi)存少,并發(fā)能力強,事實上Nginx的并發(fā)能力在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好,中國大陸使用Nginx網(wǎng)站用戶有:阿里、百度、京東、新浪、網(wǎng)易、騰訊等。
二、Nginx作為web服務(wù)器
Nginx可以作為靜態(tài)頁面的web服務(wù)器,同時還提供CGI協(xié)議的動態(tài)語言,比如perl、php等。但是不支持java。Java只能通過與tomcat配合完成。Nginx專為性能優(yōu)化而開發(fā),性能是起最重要的考量,實現(xiàn)上非常注重效率,能經(jīng)受高負載的考研,有報告表明能支持高達50000個并發(fā)連接數(shù)。
三、Nginx處理請求邏輯圖
四、Nginx的優(yōu)點
- 可以高并發(fā)連接;
- 內(nèi)存消耗少;
- 成本低廉;
- 配置文件非常簡單;
- 支持Rewrite重寫(能夠根據(jù)域名、URL的不同,將http請求分到不同的后端服務(wù)器群組。);
- 內(nèi)置的健康檢查功能;
- 節(jié)省帶寬(支持GZIP壓縮,可以添加瀏覽器本地緩存的Header頭。);
- 穩(wěn)定性高(用于反向代理,宕機的概率微乎其微。);
- 支持熱部署;
五、Nginx應(yīng)用場景
正向代理介紹
如果把局域網(wǎng)外的Internet想象成一個巨大的資源庫,則局域網(wǎng)中的客戶端要訪問Internet,則需要通過代理服務(wù)器來訪問,這種代理服務(wù)就稱為正向代理。
1、反向代理
客戶端對代理是無感知的,因為客戶端不需要任何配置就可以訪問,我們只需要將請求發(fā)送到反向代理服務(wù)器,由反向代理服務(wù)器去選擇目標(biāo)服務(wù)器獲取數(shù)據(jù),再返回給客戶端,此時反向代理服務(wù)器和目標(biāo)服務(wù)器對外就是一個服務(wù)器,暴露的是代理服務(wù)器地址,隱藏了真實服務(wù)器IP地址。
2、負載均衡
單個服務(wù)器解決不了,我們增加服務(wù)器的數(shù)量,然后將請求分發(fā)到各個服務(wù)器上,將原先請求集中到單個服務(wù)器上的情況改為將請求分發(fā)到多個服務(wù)器上,這就是負載均衡。
3、動靜分離
為了加快網(wǎng)站的解析速度,可以把動態(tài)頁面和靜態(tài)頁面由不同的服務(wù)器來解析,加快解析速度,降低原來單個服務(wù)器的壓力。
六、Nginx的常用命令
1、啟動
啟動代碼格式:nginx安裝目錄地址 -c nginx配置文件地址
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
2、從容停止
(1)查看進程號
ps -ef|grep nginx
(2)殺死進程
kill -QUIT 2072
3、快速停止
(1)查看進程號
ps -ef|grep nginx
(2)殺死進程
kill -TERM 2132
4、強制停止
pkill -9 nginx
5、重啟
(1)驗證nginx配置文件是否正確
方法一:進入nginx安裝目錄sbin下,輸入命令./nginx -t
看到如下顯示nginx.conf syntax is ok
nginx.conf test is successful
方法二:在啟動命令-c前加-t
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
6、重啟Nginx服務(wù)
方法一:進入nginx可執(zhí)行目錄sbin下,輸入命令./nginx -s reload 即可
方法二:查找當(dāng)前nginx進程號,然后輸入命令:kill -HUP 進程號 實現(xiàn)重啟nginx服務(wù)
七、Nginx配置文件
1、找到配置文件位置:
cd /usr/local/nginx/conf/nginx.conf
2、配置文件中內(nèi)容
- 全局塊:配置服務(wù)器整體運行的配置指令 比如 worker_processes 1;處理并發(fā)數(shù)的配置;
- events 塊:影響 Nginx 服務(wù)器與用戶的網(wǎng)絡(luò)連接 比如 worker_connections 1024; 支持的最大連接數(shù)為 1024;
- http 塊 還包含兩部分: http 全局塊 server 塊;
八、Nginx 配置實例-反向代理實例
1、實現(xiàn)效果
打開瀏覽器,在瀏覽器地址欄輸入地址 www.123.com,跳轉(zhuǎn)到 liunx 系統(tǒng) tomcat 主頁面中
2、準(zhǔn)備工作
- 在 liunx 系統(tǒng)安裝 tomcat,使用默認端口 8080 * tomcat 安裝文件放到 liunx 系統(tǒng)中,解壓 * 進入 tomcat 的 bin 目錄中,./startup.sh 啟動 tomcat 服務(wù)器
- 對外開放訪問的端口 firewall-cmd --add-port=8080/tcp --permanent firewall-cmd –reload 查看已經(jīng)開放的端口號 firewall-cmd --list-all
- 在 windows 系統(tǒng)中通過瀏覽器訪問 tomcat 服務(wù)器
3、訪問過程的分析
4、具體配置
第一步 在 windows 系統(tǒng)的 host 文件進行域名和 ip 對應(yīng)關(guān)系的配置
(1)添加內(nèi)容在 host 文件中
192.168.17.129 www.123.com
第二步 在 nginx 進行請求轉(zhuǎn)發(fā)的配置(反向代理配置)
server{ listen:80; server_name 192.168.100.1; location / { root html; proxy pass http://127.0.0.1:8080; index index.html index.htm; } }
5、最終測試
九、Nginx 的原理
1、mater 和 worker
2、worker 如何進行工作的
3、一個 master 和多個 woker 有好處
- 可以使用 nginx –s reload 熱部署,利用 nginx 進行熱部署操作;
- 每個 woker 是獨立的進程,如果有其中的一個 woker 出現(xiàn)問題,其他 woker 獨立的, 繼續(xù)進行爭搶,實現(xiàn)請求過程,不會造成服務(wù)中斷
4、設(shè)置多少個 woker 合適
worker 數(shù)和服務(wù)器的 cpu 數(shù)相等是最為適宜的。
5、連接數(shù) worker_connection
第一個:發(fā)送請求,占用了 woker 的幾個連接數(shù)? 答案:2 或者 4 個;
第二個:nginx 有一個 master,有四個 woker,每個 woker 支持最大的連接數(shù) 1024,支持的 最大并發(fā)數(shù)是多少?
普通的靜態(tài)訪問最大并發(fā)數(shù)是: worker_connections * worker_processes /2;
而如果是 HTTP 作 為反向代理來說,
最大并發(fā)數(shù)量應(yīng)該是 worker_connections * worker_processes/4;
總結(jié)
到此這篇關(guān)于springboot整合Nginx實現(xiàn)負載均衡反向代理的文章就介紹到這了,更多相關(guān)springboot整合Nginx負載均衡反向代理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java數(shù)據(jù)結(jié)構(gòu)與算法之雙向循環(huán)隊列的數(shù)組實現(xiàn)方法
這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)與算法之雙向循環(huán)隊列的數(shù)組實現(xiàn)方法,結(jié)合實例形式分析了雙向循環(huán)隊列的原理與數(shù)組實現(xiàn)技巧,并附帶說明了該算法的用途,需要的朋友可以參考下2016-08-08使用eclipse + maven一步步搭建SSM框架教程詳解
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、SpringMVC、MyBatis三個開源框架整合而成,常作為數(shù)據(jù)源較簡單的web項目的框架.這篇文章主要介紹了eclipse + maven搭建SSM框架 ,需要的朋友可以參考下2017-11-11