Nginx負載均衡,ssl原理,生成ssl密鑰對,Nginx配置ssl

Nginx負載均衡

  • vim /usr/local/nginx/conf/vhost/load.conf // 寫入以下內容

 

upstream qq_comphp

{html

    ip_hash;linux

    server 61.135.157.156:80;nginx

    server 125.39.240.113:80;web

}算法

servervim

{後端

    listen 80;瀏覽器

    server_name www.qq.com;服務器

    location /

    {

        proxy_pass http://qq_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;

    }

}

  • upstream來指定多個web server

   代理服務器後面能夠有多個web服務器,多個web服務器提供服務時,能夠實現負載均衡。

藉助upstream 模塊來進行負載均衡的配置

查看解析的IP命令dig

解析出了兩個IP,咱們能夠用這兩個IP125.39.240.113和61.135.157.156,作負載均衡

編輯配置文件vim /usr/local/nginx/conf/vhost/load.conf,添加內容,保存退出

ip_hash,保證同一個用戶始終保持在同一臺機器上

先不加載配置文件,本機去訪問www.qq.com,會訪問到默認虛擬主機

檢查配置文件語法正誤,並從新加載

再訪問www.qq.com,看到的是qq.com的主頁

nginx不支持去代理https,只能代理http,新版本的Nginx能夠代理tcp。

想要實現代理https,nginx監聽443端口,但web服務必須是80端口。

ssl原理

SSL工做流程

  • 瀏覽器發送一個https的請求給服務器;
  • 服務器要有一套數字證書,能夠本身製做(後面的操做就是阿銘本身製做的證書),也能夠向組織申請,區別就是本身頒發的證書須要客戶端驗證經過,才能夠繼續訪問,而使用受信任的公司申請的證書則不會彈出>提示頁面,這套證書其實就是一對公鑰(加密)和私鑰(解密);
  • 服務器會把公鑰傳輸給客戶端;
  • 客戶端(瀏覽器)收到公鑰後,(這個過程是瀏覽器判斷的)會驗證其是否合法有效,無效會有警告提醒,有效則會生成一串隨機數,並用收到的公鑰加密;
  • 客戶端把加密後的隨機字符串傳輸給服務器;
  • 服務器收到加密隨機字符串後,先用私鑰解密(公鑰加密,私鑰解密),獲取到這一串隨機數後,再用這串隨機字符串加密傳輸的數據(該加密爲對稱加密,所謂對稱加密,就是將數據和私鑰也就是這個隨機字符串>經過某種算法混合在一塊兒,這樣除非知道私鑰,不然沒法獲取數據內容);
  • 服務器把加密後的數據傳輸給客戶端;
  • 客戶端收到數據後,再用本身的私鑰也就是那個隨機字符串解密;

生成ssl密鑰對

  • cd /usr/local/nginx/conf
  • openssl genrsa -des3 -out tmp.key 2048//key文件爲私鑰
  • openssl rsa -in tmp.key -out aminglinux.key //轉換key,取消密碼
  • rm -f tmp.key
  • openssl req -new -key aminglinux.key -out aminglinux.csr//生成證書請求文件,須要拿這個文件和私鑰一塊兒生產公鑰文件
  • openssl x509 -req -days 365 -in aminglinux.csr -signkey aminglinux.key -out aminglinux.crt 這裏的aminglinux.crt爲公鑰

切換到/usr/local/nginx/conf/目錄下

查看openssl工具的安裝包

生成一個私鑰,輸入兩次密碼

轉換key,取消密碼

-in表示待轉換的祕鑰,-out表示輸出的祕鑰

刪掉tmp.key

生成證書請求文件

生成公鑰

Nginx配置ssl

  • vim /usr/local/nginx/conf/vhost/ssl.conf//加入以下內容

 

server

{

    listen 443;

    server_name aming.com;

    index index.html index.php;

    root /data/wwwroot/aming.com;

    ssl on;

    ssl_certificate aminglinux.crt;

    ssl_certificate_key aminglinux.key;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

}

  • -t && -s reload //若報錯unknown directive 「ssl」 ,須要從新編譯nginx,加上--with-http_ssl_module
  • mkdir /data/wwwroot/aming.com
  • echo 「ssl test page.」>/data/wwwroot/aming.com/index.html
  • 編輯hosts,增長127.0.0.1 aming.com
  • curl https://aming.com/

編輯配置文件,增長內容,保存退出

ssl_certificate gurui.crt,指定公鑰

ssl_certificate_key gurui.key,指定私鑰

ssl_protocols TLSv1 TLSv1.1 TLSv1.2,ssl 的協議

檢查配置文件語法正誤

出現報錯,未識別ssl配置

從新編譯nginx

而後編譯和安裝

查看nginx的編譯參數,檢查配置文件語法正誤,重啓nginx,查看監聽端口

建立一個測試文件

編輯/etc/hosts

訪問測試

提示證書不被信任,其實是已經配置成功了

擴展

針對請求的uri來代理 

根據訪問的目錄來區分後端的web

nginx長鏈接

nginx算法分析

相關文章
相關標籤/搜索