1. 程式人生 > >LNMP架構(下)課堂筆記

LNMP架構(下)課堂筆記

文件路徑 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架構(下)課堂筆記