官網(wǎng)下載Nginx
http://nginx.org/en/download.html
注:下載穩(wěn)定版,即Stateable Version的,選擇對(duì)應(yīng)操作系統(tǒng),我這里是Linux,就選擇了 nginx-1.24.0
解壓安裝
tar -xvf nginx-1.24.0.tar
- 安裝C++庫和openssl等
yum -y install gcc-c++
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel
- 安裝
順序執(zhí)行下列命令
./configure
make
make install
常用命令
./nginx -s stop #停止nginx
./nginx -s quit #安全退出
./nginx -s reload #修改了文件之后重新加載該程序文件
ps aux|grep nginx #查看nginx進(jìn)程
sbin/nginx -c /conf/nginx.vonf #指定配置文件啟動(dòng)
配置負(fù)載均衡
七層負(fù)載均衡
nginx的負(fù)載均衡語法
http {
upstream [你的負(fù)載均衡機(jī)制名稱,隨便設(shè)置一個(gè)就好] {
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
}
server {
listen [nginx監(jiān)聽端口];
server_name [head中的host對(duì)應(yīng)的值]
location / {
proxy_pass http:// [你的負(fù)載均衡機(jī)制名稱,對(duì)應(yīng)上面upstream的值];
}
}
}
nginx的負(fù)載均衡策略
- 輪詢(Round Robin默認(rèn))
? 輪詢是最常見的一種負(fù)載均衡策略。Nginx默認(rèn)使用輪詢策略,將請(qǐng)求按照順序分配到每個(gè)服務(wù)器,當(dāng)請(qǐng)求到達(dá)最后一個(gè)服務(wù)器后,再從第一個(gè)服務(wù)器繼續(xù)輪詢。,如果后端服務(wù)器掛了,則自動(dòng)剔除。
upstream backend {
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
- 權(quán)重(Weighted Load Balancing)
? 指定輪詢的頻率,weight和訪問率成正比,用于后端服務(wù)器性能不均勻的情況
upstream backend {
server [ip地址]:[端口值] weight=3;
server [ip地址]:[端口值] weight=2;
server [ip地址]:[端口值] weight=1;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
- IP Hash
? IP Hash是一種漂亮的負(fù)載均衡策略,具有Session保持的優(yōu)點(diǎn)。算法的基本思路是通過對(duì)客戶端的IP地址取Hash值,將此Hash值與服務(wù)器列表中的IP地址的Hash值進(jìn)行比較,找到具有匹配Hash值的服務(wù)器。這樣相同IP的請(qǐng)求總是被轉(zhuǎn)發(fā)到同一臺(tái)后端服務(wù)器處理,保證Session信息在同一臺(tái)服務(wù)器上處理。
upstream backend {
ip_hash; #使用IP hash策略
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
- 最少連接(Least Connections)
? nginx會(huì)盡量不讓負(fù)載繁忙的應(yīng)用服務(wù)器上負(fù)載過多的請(qǐng)求,相反的,會(huì)把新的請(qǐng)求發(fā)送到比較不繁忙的服務(wù)器。
upstream backend {
least_conn; #使用Least Connections策略
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
- 隨機(jī)(Random)
? Random會(huì)將請(qǐng)求隨機(jī)發(fā)送到后端服務(wù)器上,這種策略比較簡(jiǎn)單,但是不保證對(duì)后端服務(wù)器的負(fù)載均衡性。
upstream backend {
random; #使用Random策略
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
- URL Hash
? URL Hash會(huì)根據(jù)請(qǐng)求的URL的Hash值來將請(qǐng)求發(fā)送到后端服務(wù)器。相同URL的請(qǐng)求總是被轉(zhuǎn)發(fā)到同一臺(tái)后端服務(wù)器處理,從而保證Session信息在同一臺(tái)服務(wù)器上處理。
upstream backend {
hash $request_uri; #使用URL Hash策略
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
server [ip地址]:[端口值];
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
故障下線和備份服務(wù)設(shè)置
1.down
? 假如有一臺(tái)主機(jī)是出了故障,或者下線了,要暫時(shí)移出,那可以把它標(biāo)為down,表示請(qǐng)求是會(huì)略過這臺(tái)主機(jī)的。
upstream downServer {
server www.address1.com; # 或者ip+端口 , 不需要加入http/https前綴
server www.address2.com down;
}
2.backup
? backup是指?jìng)浞莸臋C(jī)器,相對(duì)于備份的機(jī)器來說,其他的機(jī)器就相當(dāng)于主要服務(wù)器,只要當(dāng)主要服務(wù)器不可用的時(shí)候,才會(huì)用到備用服務(wù)器。
upstream backupServer {
server www.address1.com; # 或者ip+端口 , 不需要加入http/https前綴
server www.address2.com backup;
}
3.max_fails和fail_timeout文章來源:http://www.zghlxwxcb.cn/news/detail-704420.html
? 默認(rèn)情況下,max_fails的值為1,表示的是請(qǐng)求失敗的次數(shù),請(qǐng)求1次失敗就換到下臺(tái)主機(jī)。另外還有一個(gè)參數(shù)是fail_timeout,表示的是請(qǐng)求失敗的超時(shí)時(shí)間,在設(shè)定的時(shí)間內(nèi)沒有成功,那作為失敗處理。文章來源地址http://www.zghlxwxcb.cn/news/detail-704420.html
upstream backupServer {
server www.address1.com max_fails=2; # 或者ip+端口 , 不需要加入http/https前綴
server www.address2.com backup;
}
proxy_pass參數(shù)
- proxy_set_header:設(shè)置反向代理向后端發(fā)送的http請(qǐng)求頭信息,如添加host主機(jī)頭部字段,讓后端服務(wù)器能夠獲取到真實(shí)客戶端的IP信息等
- client_body_buffer_size:指定客戶端請(qǐng)求主體緩沖區(qū)大小
- proxy_connect_timeout:反向代理和后端節(jié)點(diǎn)連接的超時(shí)時(shí)間,也是建立握手后等待響應(yīng)的時(shí)間
- proxy_send_timeout:表示代理后端服務(wù)器的數(shù)據(jù)回傳時(shí)間,在規(guī)定時(shí)間內(nèi)后端若數(shù)據(jù)未傳完,nginx會(huì)斷開連接
- proxy_read_timeout:設(shè)置Nginx從代理服務(wù)器獲取數(shù)據(jù)的超時(shí)時(shí)間
- proxy_buffer:設(shè)置緩沖區(qū)的數(shù)量大小
到了這里,關(guān)于Nginx安裝及配置負(fù)載均衡的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!