本文內(nèi)容包括:
- nginx配置實例之反向代理肤晓;
- nginx配置實例之動靜分離爷贫;
- nginx配置實例之負載均衡;
- nginx配置實例之高可用补憾;
- nginx原理分析漫萄。
歡迎大家關注我的公眾號 javawebkf,目前正在慢慢地將簡書文章搬到公眾號盈匾,以后簡書和公眾號文章將同步更新腾务,且簡書上的付費文章在公眾號上將免費。
一削饵、nginx基本概念
1岩瘦、nginx是什么:
nginx是一個高性能的服務器,占用內(nèi)存少窿撬,并發(fā)能力強启昧。
2、反向代理:
正向代理:眾所周知劈伴,我們不能直接訪問谷歌,因為有墻跛璧,要訪問我們就需要梯子漓柑,這個梯子就是正向代理。在我們?yōu)g覽器端需要配置正向代理服務器,然后讓代理服務器幫我們?nèi)ピL問谷歌割粮,谷歌把內(nèi)容返回給代理服務器,代理服務器再把內(nèi)容返回到我們?yōu)g覽器。
反向代理:通常我們自己擼代碼都是發(fā)布到tomcat上皇型,然后直接在瀏覽器訪問tomcat幢痘,這個過程是沒有代理的喊积。反向代理就是不直接訪問tomcat拟蜻,而是在瀏覽器上訪問一個代理服務器绎签,代理服務器再決定將請求轉發(fā)給哪一個tomcat。對外而言酝锅,客戶端根本不知道自己訪問的是代理服務器诡必。
其實正向代理和反向代理就是代理的對象不同,正向是代理客戶端搔扁,反向是代理服務端爸舒。
3蟋字、負載均衡:
說負載均衡前先說說我們自己擼的代碼發(fā)布到tomcat然后通過瀏覽器訪問是怎么樣的一個過程。我們通過客戶端請求服務端碳抄,服務端跟數(shù)據(jù)庫交互愉老,將數(shù)據(jù)返回服務端,服務端最后響應客戶端剖效。這種方式適合系統(tǒng)業(yè)務復雜度較低嫉入,請求量不大的情況。如果并發(fā)請求特別多璧尸,服務器是頂不住的咒林,就會由于服務器性能瓶頸出現(xiàn)問題。解決辦法就是一只湯姆貓拉不動了就多叫幾只貓爷光。
4垫竞、動靜分離:
靜態(tài)資源是固定的不變的,比如js蛀序、css欢瞪、jpg等,動態(tài)資源就是要與數(shù)據(jù)庫交互的徐裸,比如servlet遣鼓、jsp之類的。未做動靜分離的時候重贺,不管是動態(tài)資源還是靜態(tài)資源骑祟,我們都放到同一只湯姆貓上,這樣它負擔也挺大的气笙;做了動靜分離次企,就是把動態(tài)資源放到湯姆貓上,靜態(tài)資源放到另外一臺服務器上潜圃,然后客戶端請求通過nginx缸棵,由nginx來決定是訪問動態(tài)服務器還是靜態(tài)服務器,這樣就降低了單臺服務器的壓力谭期。
二蛉谜、nginx安裝以及常用命令和配置文件
1、安裝nginx:
首先進入官網(wǎng)下載nginx崇堵。https://nginx.org/
安裝需要的編譯工具型诚,包括
pcre-devel、openssl-devel鸳劳、gcc
和zlib-devel
狰贯。用yum install make
安裝即可。-
將nginx上傳到Linux中,解壓涵紊,然后進入到解壓縮目錄傍妒,執(zhí)行
./configure
,出現(xiàn)下圖才表示configure成功了摸柄。
configure成功 -
完事兒后再執(zhí)行
make&&make install
颤练,如下圖所示則安裝成功了。安裝完后在/usr/local
目錄中驱负,會有一個nginx
目錄嗦玖,啟動腳本在nginx/sbin
中。
安裝成功 -
進入到
/usr/local/nginx/sbin
目錄中跃脊,執(zhí)行./nginx
宇挫,就啟動了nginx,瀏覽器訪問你Linux機器的ip酪术,出現(xiàn)下圖就表示啟動成功器瘪。如果訪問不了,注意防火墻是否開放了80端口绘雁。
nginx啟動成功
2橡疼、nginx常用命令:
以下列舉的命令都是在/usr/local/nginx/sbin
下執(zhí)行的。
-
./nginx
:啟動nginx -
./nginx -s stop
:快速關閉nginx庐舟,可能不保存相關信息 -
./nginx -s quit
:平穩(wěn)關閉nginx欣除,保存相關信息 -
./nginx -s reload
:重新加載配置文件 -
./nginx -s reopen
:重新打開日志文件 -
./nginx -c filename
:為nginx指定一個配置文件 -
./nginx -t
:檢查配置文件的配置是否有語法錯誤 -
./nginx -v
:查看nginx的版本 -
./nginx -V
:查看版本以及配置參數(shù)等
3、nginx的配置文件:
配置文件的位置:/usr/local/nginx/conf
下的nginx.conf
继阻。配置文件分為三部分,全局塊废酷、events塊和http塊瘟檩。
從配置文件開始到events之間的叫全局塊,配置全局的一些指令澈蟆。
worker_processes 1
表示nginx處理的并發(fā)數(shù)量墨辛,值越大,能處理的并發(fā)量就越多趴俘。events塊主要是影響nginx服務器與用戶的網(wǎng)絡連接睹簇。
worker_connections 1024
表示支持的最大連接數(shù)。http塊是配置最頻繁的部分寥闪,又包括http全局塊和server塊太惠。http全局塊可配置的指令包括文件引入、mime-type定義疲憋、日志自定義凿渊、連接超時時間和單鏈接請求數(shù)上限等;server塊是最主要的配置部分,配置一些和主機相關的東西埃脏。
三搪锣、nginx實現(xiàn)反向代理
1、最終效果:
在瀏覽器上輸入www.xixihaha.com彩掐,跳轉到tomcat的主頁面(所以要先安裝一個tomcat并啟動构舟;或者也可以搞個springboot項目丟上去啟動)。因為用到了域名堵幽,所以要在windows的host文件中配置域名與虛擬機ip的映射(域名的工作原理就是先看host文件中有沒有映射狗超,沒有就通過DNS服務器去解析域名)。
2谐檀、進行配置:
首先將server_name改成虛擬機的IP抡谐,然后在location那里設置代理的域名和端口,這樣就搞定了桐猬。
3麦撵、代理多個端口:
上面是將www.xixihaha.com的請求轉發(fā)到8080端口了,現(xiàn)在像將www.xixihaha.com/xi的請求轉發(fā)到8081端口溃肪,www.xixihaha.com/ha的請求轉發(fā)到8082端口免胃。
首先在8081端口tomcat的webapp目錄下新建一閣文件夾名字為"xi",文件夾里面放一個xi.html惫撰;然后在8082端口omcat的webapp目錄下新建一個ha文件夾羔沙,在文件夾里面放一個ha.html。分別啟動這兩個tomcat厨钻。
然后在server塊里面進行如下的配置:
server {
listen 80;
server_name www.xixihaha.com;
location ~ /xi/ {
proxy_pass http://127.0.0.1:8081;
}
location ~ /ha/ {
proxy_pass http://127.0.0.1:8082;
}
}
注意一個配置文件里可以寫多個server扼雏,這個server和剛才配置的轉發(fā)到tomcat歡迎頁的可以同時存在。這個server配置location的時候用的類似于正則表達式夯膀,~ /xi/就表示路徑中有xi的就轉發(fā)到8081端口诗充。
~ 包含該字符串就匹配,區(qū)分大小寫
~* 包含該字符串就匹配诱建,不區(qū)分大小寫
= 完全相同才匹配
^~ 匹配不包含正則的且匹配度最高的location
-
最終效果圖:
反向代理
四蝴蜓、nginx實現(xiàn)負載均衡
1、準備工作:
上面說了負載均衡就是將多個請求分配給不同的服務器俺猿,減輕單一服務器的壓力【ソ常現(xiàn)在我們先在8081和8082的tomcat的webapp目錄下新建一個文件夾test,里面都放一個index.html(實際上這兩個index.html是完全一樣的押袍,就是代表我們需要做負載均衡的項目诵冒,這里為了等下可以更好的看到效果,這兩個html可以做一些標記谊惭,比如8081的就標記一下8081)造烁。