一郎哭、nginx簡(jiǎn)介
1.什么是nginx?
一個(gè)高性能的HTTP和反向代理服務(wù)菇存,也是一個(gè)IMAP/POP3/SMTP服務(wù)
特點(diǎn)是占用內(nèi)存少夸研,并發(fā)能力強(qiáng)
2.為什么使用niginx?
互聯(lián)網(wǎng)時(shí)代依鸥,海量用戶高并發(fā)已然成為互聯(lián)網(wǎng)的主體亥至。
如何能讓一個(gè)網(wǎng)站承載幾萬(wàn)甚至幾十萬(wàn)個(gè)用戶的持續(xù)訪問呢?這是中小網(wǎng)站急需解決的問題毕籽。
傳統(tǒng)單機(jī)tomcat搭建的網(wǎng)站抬闯,在比較理想的狀態(tài)下能夠承受的并發(fā)訪問量在 150 到 200 左右。按照并發(fā)訪問量占總用戶數(shù)量的 5% 到 10% 這樣計(jì)算关筒,單點(diǎn) tomcat 網(wǎng)站的用戶人數(shù)在 1500 到 4000 左右溶握。遠(yuǎn)遠(yuǎn)不能滿足海量用戶的訪問需求。這時(shí)候可以使用負(fù)載均衡
來(lái)解決高并發(fā)的問題蒸播,而nginx
就是一款高性能可以實(shí)現(xiàn)負(fù)載均衡的代理服務(wù)器睡榆。
應(yīng)用場(chǎng)景:
- http 服務(wù)器,可以做靜態(tài)網(wǎng)頁(yè)的 http 服務(wù)器袍榆。
- 配置虛擬機(jī)胀屿,一個(gè)域名可以被多個(gè) ip 綁定“福可以根據(jù)域名的不同把請(qǐng)求轉(zhuǎn)發(fā)給運(yùn)行在不同端口的服務(wù)器宿崭。
- 反向代理,負(fù)載均衡才写。把請(qǐng)求轉(zhuǎn)發(fā)給不同的服務(wù)器葡兑。
二、搭建集群
1.在Windows下搭建集群
1.1.在 D 盤新建兩個(gè)新建兩個(gè)目錄 tomcat1赞草、tomcat2
1.2.修改 tomcat2 的端口讹堤,例如, 在以 tomcat1 的端口為基礎(chǔ)上+10厨疙,修改完洲守,啟動(dòng)這兩個(gè) tomcat,再分別訪問
- 訪問 8080 端口:
localhost:8080/test/
- 訪問 8090 端口:
localhost:8090/test/
1.3.解壓 nginx
修改 ngnix 的 nginx.conf 文件沾凄,在 location / 下添加反向代理服務(wù)器梗醇,代理 8080 端口:
location / {
root html;
index index.html index.htm;
proxy_pass http://localhost:8080
}
以上只是代理了一臺(tái)服務(wù)器。啟動(dòng) nginx撒蟀,每次訪問 localhost/test/叙谨, 最后訪問的都是8080端口服務(wù)器的數(shù)據(jù)。
1.4.代理集群牙肝,例如代理兩臺(tái)服務(wù)器
//需要在http節(jié)點(diǎn)上添加一個(gè)
upstream mz{
server 127.0.0.1:8080;
server 127.0.0.1:8090;
}
//修改location /下的反向代理
proxy_pass http://mz
修改如圖:
另外,還可以給服務(wù)器添加權(quán)重:
表示如果有 6 次訪問,則有 4 次可能訪問到第二個(gè)服務(wù)器配椭。啟動(dòng) nginx虫溜,則每次訪問localhost/test/,會(huì)有可能訪問到8080端口服務(wù)器的數(shù)據(jù)股缸,也可能訪問到8090端口服務(wù)器的數(shù)據(jù)衡楞。
1.5.Session共享問題
- 解決方式一(只能在 windows 下好使):
web 服務(wù)器解決(廣播機(jī)制),注意:tomcat 下性能低
修改兩個(gè)地方:- 修改兩個(gè) tomcat 的 server.xml敦姻,支持共享瘾境,將引擎標(biāo)簽下的
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
注釋去掉
- 修改項(xiàng)目的配置文件 web.xml 中添加一個(gè)節(jié)點(diǎn)
<distributable/>
- 修改兩個(gè) tomcat 的 server.xml敦姻,支持共享瘾境,將引擎標(biāo)簽下的
- 解決方式二:可以將 session 的 id 放入 redis 中
- 解決方式三:保證一個(gè) ip 地址永遠(yuǎn)的訪問一臺(tái) web 服務(wù)器,就不存在 session 共享問題了镰惦,在 nginx 的配置文件中 upstream 中添加 ip_hash(在 Linux 下經(jīng)常使用該方式)
ip_hash 指令能夠?qū)⒛硞€(gè)客戶端 IP 的請(qǐng)求通過哈希算法定位到同一臺(tái)后端服務(wù)器上迷守。
2.在Linux下搭建集群
2.1.先將 nginx 上傳到 linux 上
2.2.解壓 nginx
2.3.先編譯 nginx
安裝依賴包
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
執(zhí)行編譯
先進(jìn)入 nginx的目錄
執(zhí)行
./configure
2.4.安裝 nginx
- 執(zhí)行
make
- 執(zhí)行
make install
2.5.啟動(dòng) nginx:
cd nginx 目錄下
配置文件 conf
啟動(dòng)nginx
./nginx
注:
①在 nginx 目錄下有一個(gè) sbin 目錄,sbin 目錄下有一個(gè) nginx 可執(zhí)行程序
②關(guān)閉 ngnix:
- 關(guān)閉命令:相當(dāng)于找到 nginx 進(jìn)程kill ./nginx -s stop
- 退出命令 ./nginx -s quit等程序執(zhí)行完畢后關(guān)閉旺入,建議使用此命令兑凿。
2.6.將端口號(hào) 80 放行
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
將該設(shè)置添加到防火墻的規(guī)則中
/etc/rc.d/init.d/iptables save
2.7.修改 conf 文件和 window 下一樣:配置集群