LNMP架構(下)課堂筆記
阿新 • • 發佈:2018-09-27
文件路徑 ali com ron ack 主機 warning 故障 響應 9-25LNMP架構(下)
一、負載均衡
server 192.168.233.150:80 weight=1;
1、server標簽參數說明:
weight=1 表示服務器權重,默認是1.數字越大表示接受的請求的比例越大
max_fails=1 表示nginx嘗試連接後端主機失敗的次數,一般企業場景建議用2~3次
fail_timeout=10s 在定義max_fails的失敗次數後,距離下次檢查的間隔時間,默認是10s。例如max_fails=5,如果5次都是404,那麽等待10s再檢查一次。一般業務設置為2~3秒。
backup 表示熱備配置,備用服務器。當負載均衡算法為ip_hash時,後端服務器在負載均衡中的狀態不能使weight和backup。
down 標記這個服務器不可用。這個參數配合ip_hash使用
二、SSL
https://coding.net/u/aminglinux/p/nginx/git/blob/master/ssl/ssl.md
SSL工作流程單向和雙向區別
單向:
1.客戶端say hello 服務端
2.服務端將證書、公鑰等發給客戶端
3.客戶端CA驗證證書,成功繼續、不成功彈出選擇頁面
4.客戶端告知服務端所支持的加密算法
5.服務端選擇最高級別加密算法明文通知客戶端
6.客戶端生成隨機對稱密鑰key,使用服務端公鑰加密發送給服務端
7.服務端使用私鑰解密,獲取對稱密鑰key
8.後續客戶端與服務端使用該密鑰key進行加密通信
雙向:
1.客戶端say hello 服務端
2.服務端將證書、公鑰等發給客戶端
3.客戶端CA驗證證書,成功繼續、不成功彈出選擇頁面
4.客戶端將自己的證書和公鑰發送給服務端
5.服務端驗證客戶端證書,如不通過直接斷開連接
6.客戶端告知服務端所支持的加密算法
7.服務端選擇最高級別加密算法使用客戶端公鑰加密後發送給客戶端
8.客戶端收到後使用私鑰解密並生成隨機對稱密鑰key,使用服務端公鑰加密發送給服務端
9.服務端使用私鑰解密,獲取對稱密鑰key
10.後續客戶端與服務端使用該密鑰key進行加密通信
搭建自己的網站:
1、有域名的情況下,可以申請免費SSL證書
https://freessl.org/
2、便宜購買服務器http://banwagong.cn/
3、購買域名:www.xinnet.com
三、慢執行日誌
#要掌握,很方便排查php網站出現的問題
四、php-fpm的open_basedir
#將php網站限定在一個目錄下
#針對apache虛擬主機設置basedir,或者針對每個pool設置basedir
六、進程管理
配置最大子進程數合適的方法
#根據內存數和php占用情況來設定
測試php占用情況
#比如一開始設置最大子進程數50個,然後開啟業務,,使用ps aux查看,看php-fpm消耗多少內存,假如消耗了10M內存,內存還剩3G(4G內存,系統分配1G),3G除以10M,等於300,也就是說最多可以分配300個子進程
七、擴展
1、負載均衡配置
Nginx通過upstream和proxy_pass實現了負載均衡。本質上也是Nginx的反向代理功能,只不過後端的server為多個。
2、負載均衡算法
Nginx的幾種負載均衡算法:
1、輪詢(默認) :每個請求按時間順序逐一分配到不同的後端服務器,如果後端某臺服務器宕機,則自動剔除故障機器,使用戶訪問不受影響。
2、weight:指定輪詢權重,weight值越大,分配到的幾率就越高,主要用於後端每臺服務器性能不均衡的情況。
3、ip_hash:每個請求按訪問IP的哈希結果分配,這樣每個訪客固定訪問一個後端服務器,可以有效的解決動態網頁存在的session共享問題。
4、fair(第三方):更智能的一個負載均衡算法,此算法可以根據頁面大小和加載時間長短智能地進行負載均衡,也就是根據後端服務器的響應時間來分配請求,響應時間短的優先分配。如果想要使用此調度算法,需要Nginx的upstream_fair模塊。
5、url_hash(第三方) :按訪問URL的哈希結果來分配請求,使每個URL定向到同一臺後端服務器,可以進一步提高後端緩存服務器的效率。如果想要使用此調度算法,需要Nginx的hash軟件包。
在upstream模塊中,可以通過server命令指定後端服務器的IP地址和端口,同時還可以設置每臺後端服務器在負載均衡調度中的狀態,常用的狀態有以下幾種:
1、down:表示當前server暫時不參與負載均衡。
2、backup:預留的備份機,當其他所有非backup機器出現故障或者繁忙的時候,才會請求backup機器,這臺機器的訪問壓力最輕。
3、max_fails:允許請求的失敗次數,默認為1,配合fail_timeout一起使用
4、fail_timeout:經歷max_fails次失敗後,暫停服務的時間,默認為10s(某個server連接失敗了max_fails次,則nginx會認為該server不工作了。同時,在接下來的 fail_timeout時間內,nginx不再將請求分發給失效的server。)
3、nginx路徑別名
nginx指定文件路徑有兩種方式root和alias,這兩者的用法區別,使用方法總結了下,方便大家在應用過程中,快速響應。root與alias主要區別在於nginx如何解釋location後面的uri,這會使兩者分別以不同的方式將請求映射到服務器文件上。
[root]
語法:root path
默認值:root html
配置段:http、server、location、if
[alias]
語法:alias path
配置段:location
實例:
location ~ ^/weblogs/ {
root /data/weblogs/www.ttlsa.com;
autoindex on;
auth_basic "Restricted";
auth_basic_user_file passwd/weblogs;
}
如果一個請求的URI是/weblogs/httplogs/www.ttlsa.com-access.log時,web服務器將會返回服務器上的/data/weblogs/www.ttlsa.com/weblogs/httplogs/www.ttlsa.com-access.log的文件。
[info]root會根據完整的URI請求來映射,也就是/path/uri。[/info]
因此,前面的請求映射為path/weblogs/httplogs/www.ttlsa.com-access.log。
location ^~ /binapp/ {
limit_conn limit 4;
limit_rate 200k;
internal;
alias /data/statics/bin/apps/;
}
alias會把location後面配置的路徑丟棄掉,把當前匹配到的目錄指向到指定的目錄。如果一個請求的URI是/binapp/a.ttlsa.com/favicon時,web服務器將會返回服務器上的/data/statics/bin/apps/a.ttlsa.com/favicon.jgp的文件。
[warning]1. 使用alias時,目錄名後面一定要加"/"。
2. alias可以指定任何名稱。
3. alias在使用正則匹配時,必須捕捉要匹配的內容並在指定的內容處使用。
4. alias只能位於location塊中。
LNMP架構(下)課堂筆記