十分钟学习nginx
啟動(dòng)
nginx重啟
nginx -s reopen停止
nginx -s stop熱加載
./nginx -s reload測(cè)試修改配置文件是否正常
nginx -t默認(rèn)配置文件位置
/usr/local/nginx/conf/調(diào)整Nginx基本配置
/usr/local/nginx/conf/nginx.conf自定義的Nginx配置放到哪里
/usr/local/nginx/servers也可以自定義只要放被include就可以
nginx安全退出
./nginx -s quit負(fù)載均衡
1.輪詢2.權(quán)重3.fair4.url_hash 5.ip_hash
1、輪詢(默認(rèn))
每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動(dòng)剔除。
upstream backserver {server 192.168.0.14;server 192.168.0.15; }2、weight
指定輪詢幾率,weight和訪問(wèn)比率成正比,用于后端服務(wù)器性能不均的
情況。
權(quán)重越高,在被訪問(wèn)的概率越大,如上例,分別是30%,70%。
3、ip_hash
上述方式存在一個(gè)問(wèn)題就是說(shuō),在負(fù)載均衡系統(tǒng)中,假如用戶在某臺(tái)服務(wù)器上登錄了,那么該用戶第二次請(qǐng)求的時(shí)候,因?yàn)槲覀兪秦?fù)載均衡系統(tǒng),每次請(qǐng)求都會(huì)重新定位到服務(wù)器集群中的某一個(gè),那么*已經(jīng)登錄某一個(gè)服務(wù)器的用戶再重新定位到另一個(gè)服務(wù)器,其登錄信息將會(huì)丟失,這樣顯然是不妥的*。
我們可以采用**ip_hash*指令解決這個(gè)問(wèn)題,如果客戶已經(jīng)訪問(wèn)了某個(gè)服務(wù)器,當(dāng)用戶再次訪問(wèn)時(shí),會(huì)將該請(qǐng)求通過(guò)哈希算法,自動(dòng)定位到該服務(wù)器*。
每個(gè)請(qǐng)求按訪問(wèn)ip的hash結(jié)果分配,這樣每個(gè)訪客固定訪問(wèn)一個(gè)后端服務(wù)器,可以解決*session的問(wèn)題*。
4、fair(第三方)
按后端服務(wù)器的響應(yīng)時(shí)間來(lái)分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。
upstream backserver {server server1;server server2;fair; }5、url_hash(第三方)
按訪問(wèn)url的hash結(jié)果來(lái)分配請(qǐng)求,使每個(gè)url定向到同一個(gè)(對(duì)應(yīng)的)后端服務(wù)器,后端服務(wù)器為緩存時(shí)比較有效。
upstream backserver {server squid1:3128;server squid2:3128;hash $request_uri;hash_method crc32; }在需要使用負(fù)載均衡的server中增加
proxy_pass http://backserver/; upstream backserver{ ip_hash; server 127.0.0.1:9090 down; (down 表示單前的server暫時(shí)不參與負(fù)載) server 127.0.0.1:8080 weight=2; (weight 默認(rèn)為1.weight越大,負(fù)載的權(quán)重就越大) server 127.0.0.1:6060; server 127.0.0.1:7070 backup; (其它所有的非backup機(jī)器down或者忙的時(shí)候,請(qǐng)求backup機(jī)器) }max_fails :允許請(qǐng)求失敗的次數(shù)默認(rèn)為1.當(dāng)超過(guò)最大次數(shù)時(shí),返回proxy_next_upstream 模塊定義的錯(cuò)誤
fail_timeout:max_fails次失敗后,暫停的時(shí)間
配置實(shí)例:
配置文件結(jié)構(gòu)
性能在全局
虛擬主機(jī)
網(wǎng)站訪問(wèn)量大,需要負(fù)載均衡。然而并不是所有網(wǎng)站都如此出色,有的網(wǎng)站,由于訪問(wèn)量太小,需要節(jié)省成本,將多個(gè)網(wǎng)站部署在同一臺(tái)服務(wù)器上。
例如將兩個(gè)網(wǎng)站部署在同一臺(tái)服務(wù)器上,兩個(gè)域名解析到同一個(gè)IP地址,但是用戶通過(guò)兩個(gè)域名卻可以打開(kāi)兩個(gè)完全不同的網(wǎng)站,互相不影響,就像訪問(wèn)兩個(gè)服務(wù)器一樣,所以叫兩個(gè)虛擬主機(jī)。
server {listen 80 default_server;server_name _;return 444; # 過(guò)濾其他域名的請(qǐng)求,返回444狀態(tài)碼 } server {listen 80;server_name www.aaa.com; # www.aaa.com域名location / {proxy_pass http://localhost:8080; # 對(duì)應(yīng)端口號(hào)8080} } server {listen 80;server_name www.bbb.com; # www.bbb.com域名location / {proxy_pass http://localhost:8081; # 對(duì)應(yīng)端口號(hào)8081} }在服務(wù)器8080和8081分別開(kāi)了一個(gè)應(yīng)用,客戶端通過(guò)不同的域名訪問(wèn),根據(jù)server_name可以反向代理到對(duì)應(yīng)的應(yīng)用服務(wù)器。
虛擬主機(jī)的原理是通過(guò)HTTP請(qǐng)求頭中的Host是否匹配server_name來(lái)實(shí)現(xiàn)的,有興趣的同學(xué)可以研究一下HTTP協(xié)議。
另外,server_name配置還可以過(guò)濾有人惡意將某些域名指向你的主機(jī)服務(wù)器。
總結(jié)
以上是生活随笔為你收集整理的十分钟学习nginx的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: gin-vue-blog自建博客
- 下一篇: flutter Web打包