Linux學習總結(四十三)nginx 負載均衡 https 配置
當被代理的服務端為多臺服務器時,就存在一個分發的問題,那麽就涉及到一個負載均衡的概念。如何讓客戶端請求按照預定的設想均衡的分發到各個服務器上,就要使用各種均衡算法。下面介紹的ip哈希算法可以實現如下目的。
當對後端的多臺動態應用服務器做負載均衡時,ip_hash指令能夠將某個客戶端IP的請求通過哈希算法定位到同一臺後端服務器上。這樣,當來自某個IP的用戶在後端Web服務器A上登錄後,再訪問該站點的其他URL,能夠保證其訪問的還是後端Web服務器A。如果請求的網站涉及到用戶名密碼等登陸信息,不至於下次訪問時請求到其他服務器上而丟失。
我們還以百度為例,就是在之前的反響代理基礎上加上ip_hash 算法
61.135.169.125
61.135.169.121
upstream baidu_com { ip_hash; server 61.135.169.125:80; server 61.135.169.121:80; } server { listen 80; server_name www.baidu.com; location / { proxy_pass http://baidu_com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
curl -x127.0.0.1:80 www.baidu.com
我們發現可以訪問,也就是說這個代理服務器起作用了,但是怎麽驗證他的負載均衡了,就是怎麽查看最終訪問到哪一個ip呢,有知道的小夥伴可以給我留言。
2 https加密原理
htttps 相對於http來說多了一套數字認證過程,客戶端和服務器之前的通信是加密過的,因此具有很高的安全性。下面我們根據下圖所示原理,逐一說明該加密傳輸過程。
1 客戶端發起一個htts請求
2 服務端通過受信任的頒發機構獲得ssl證書。
3 服務端用該證書的公鑰相應請求給客戶端。
4 客戶端驗證該收到的公鑰的合法性和有效性,無效發出警告提醒。有效則生成隨機字符串,並用該公鑰加密。
6 服務端收到來自客戶端加密過的隨機字符串,用ssl證書私鑰解密該字符串
7 服務端用解密出來的字符串加密請求頁數據返回給客戶端
8 客戶端用隨機字符串解密數據。
備註:該過程當中,客戶端生成的隨機字符串是一次性的
3 生成ssl秘鑰對
cd /usr/local/nginx/conf
openssl genrsa -des3 -out tmp.key 2048//key文件為私鑰,根據提示輸入兩次密碼
openssl rsa -in tmp.key -out lvlinux.key //轉換key,取消密碼 。根據提示輸入上面的密碼
rm -f tmp.key
openssl req -new -key lvlinux.key -out lvlinux.csr//生成證書請求文件,需要拿這個文件和私鑰一起生成公鑰。根據提示填寫相關信息。
openssl x509 -req -days 365 -in lvlinux.csr -signkey lvlinux.key -out lvlinux.crt
這裏的lvlinux.crt為公鑰
4 nginux 配置ssl
vim /usr/local/nginx/conf/vhost/ssl.conf//加入如下內容
server
{
listen 443;
server_name lvlinux.com;
index index.html index.php;
root /data/wwwroot/lvlinux.com;
ssl on;
ssl_certificate lvlinux.crt;
ssl_certificate_key lvlinux.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
}
-t && -s reload //若報錯unknown directive “ssl” ,需要重新編譯nginx,加上--with-http_ssl_module
mkdir /data/wwwroot/lvlinux.com
echo "ssl test" >/data/wwwroot/lvlinux.com/index.html
編輯hosts,增加127.0.0.1 lvlinux.com
curl https://lvlinux.com/
發現證書頒發機構被標記為不受用戶信任,我們自己頒發的證書當然是這樣了.
在windos上綁定hosts 用瀏覽器訪問
註意我們要 netstat -lntp 查看有沒有監聽443 端口,沒有的話重啟下nginx
Linux學習總結(四十三)nginx 負載均衡 https 配置