Nginx配置https請求,以及Nginx+keepalived實現高可用

一、Nginx配置https請求
要實現Nginx配置https請求,安裝的時候需要加上 --with-http_ssl_module,因爲http_ssl_module不屬於Nginx的基本模塊。

./configure  --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

1、創建證書

SSL 證書是一種互聯網上身份驗證的方式,可以用來標識和證明通信雙方身份的數字信息文件。使用SSL 證書的網站,能夠保證用戶和服務器間信息交換的保密性。SSL證書由瀏覽器中“受信任的根證書頒發機構”在驗證服務器身份後頒發,具有網站身份驗證和加密傳輸雙重功能。Nginx創建證書步驟如下:

(a)openssl genrsa -des3 -out server.key 1024

創建服務器私鑰,採用rsa算法生成服務器私鑰,然後存放在server.key文件中。

(b)openssl req -new -key server.key -out server.csr

創建證書請求文件csr,用於申請證書,csr核心內容是一個公鑰

(c)cp server.key server.key.org

備份一份服務器密鑰文件

(d)openssl rsa -in server.key.org -out server.key

去除使用私鑰的口令驗證

(e)openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

生成證書文件server.crt,其中x509是一種證書格式,-days 365證書有效期365天,server.crt就是最後需要的證書。

2、Nginx配置https

http {
    include       mime.types;
    default_type  application/octet-stream;
 
    log_format  myformat  '$remote_addr - $remote_user [$time_local] "$request" ';
    access_log  logs/my.log  myformat;
    sendfile        on;
    keepalive_timeout  65;
 
    upstream www.feixiang.com {
        ip_hash;
        server 192.168.101.10;
    }
 
    #把http的域名請求轉成https
    server {
        listen       80;
        server_name  www.wf.com;
        rewrite ^(.*)$ https://$host$1 permanent;
    }
 
    server {
        listen       443 ssl;
        server_name  wwww.wf.com;
        #證書文件
        ssl_certificate /usr/local/nginx/conf/server.crt;
        #私鑰文件
        ssl_certificate_key /usr/local/nginx/conf/server.key;
    
        location / {
            proxy_pass http://www.feixiang.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; 
            proxy_set_header X-Forwarded-Proto https; 
            proxy_redirect off; 
        }
    }    
}
二、Nginx+keepalived實現高可用
keepalived就是利用VRRP協議實現的一種可保障集羣高可用的工具。通過主機之間的優先等級以及心跳檢測來及時切換主備機的工作狀態,以提高集羣的高可用性。

VRRP全稱 Virtual Router Redundancy Protocol,即虛擬路由冗餘協議。可以認爲它是實現路由器高可用的容錯協議,即將N臺提供相同功能的路由器組成一個路由器組(Router Group),這個組裏面有一個master和多個backup,但在外界看來就像一臺一樣,構成虛擬路由器,擁有一個虛擬IP(vip,也就是路由器所在局域網內其他機器的默認路由),佔有這個IP的master實際負責ARP響應和轉發IP數據包,組中的其它路由器作爲備份的角色處於待命狀態。master會發組播消息,當backup在超時時間內收不到vrrp包時就認爲master宕掉了,這時就需要根據VRRP的優先級來選舉一個backup當master,保證路由器的高可用。

1、安裝keepalived

(a)tar -zxvf keepalived.tar.gz

(b)./configure --prefix=/mnt/keepalived --sysconf=/etc

主要作用是對即將安裝的軟件進行配置,檢查當前的環境是否滿足要安裝軟件的依賴關係,但並不是所有的tar包都是源代碼的包,可以查看有沒有configure文件判斷是否源代碼包,如果是二進制的包,解壓後直接就能使用。

--prefix指的是安裝路徑,不指定prefix,則可執行文件默認放在/usr/local/bin,庫文件默認放在/usr/local/lib,配置文件默認放在/usr/local/etc。其它的資源文件放在/usr /local/share。

--with指的是安裝本文件所依賴的庫文件。

--sysconf指定配置文件安裝路徑

(c)make && make install

編譯安裝

(d)cd /mnt/keepalived-2.0.10

ln -s /mnt/keepalived/sbin/keepalived /sbin

建立軟鏈接

(e)添加系統服務

cp /mnt/keepalived-2.0.10/keepalived/etc/init.d/keepalived /etc/init.d/

chkconfig --add keepalived

chkconfig keepalived on

添加系統服務,設置開機啓動

systemctl start keepalived

systemctl restart keepalived

啓動系統服務

systemctl stop keepalived

停止系統服務

systemctl status keepalived

查看服務狀態

(f)配置輸出日誌

將keepalived日誌輸出到local0

vim /etc/sysconfig/keepalived

KEEPALIVED_OPTIONS="-D -d -S 0"

在/etc/rsyslog.conf裏添加

vim /etc/rsyslog.conf

local0.*  /var/log/keepalived.log

重新啓動keepalived和rsyslog服務

service rsyslog restart

systemctl restart keepalived

2、keepalived配置

主備keepalived使用相同的虛擬ip(192.168.101.10),主keepalived的實際ip地址爲192.168.101.100,備份keepalived的實際ip地址爲192.168.101.101。主備keepalived的配置文件/etc/keepalived/ keepalived.conf分別如下:

global_defs {
   router_id LVS_DEVEL
}
 
vrrp_instance VI_1 {
    state MASTER
    #監測網卡的端口(ifconfig查看,默認是eth0)
    interface eth0
    #虛擬路由的標誌,主從(MASTER、BACKUP)要一致
    virtual_router_id 51
    #優先級,值越大優先級越高(主keepalived優先級50,備份keepalived優先級100)
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #虛擬IP地址,需要自行配置
    virtual_ipaddress {
        192.168.101.10
    }
}
 
virtual_server 192.168.101.10 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP
 
    real_server 192.168.11.100 80 {
        weight 1
    #TCP檢查
    TCP_CHECK {
        connect_timeout 3
        delay_before_retry 3
        connect_port 80
    }
    }
}
主keepalived配置

global_defs {
   router_id LVS_DEVEL
}
 
vrrp_instance VI_1 {
    state BACKUP
    #監測網卡的端口(ifconfig查看,默認是eth0)
    interface eth0
    #虛擬路由的標誌,主從(MASTER、BACKUP)要一致
    virtual_router_id 51
    #優先級,值越大優先級越高(主keepalived優先級50,備份keepalived優先級100)
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #虛擬IP地址,需要自行配置
    virtual_ipaddress {
        192.168.101.10
    }
}
 
virtual_server 192.168.101.10 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP
 
    real_server 192.168.201.100 80 {
        weight 1
    #TCP檢查
    TCP_CHECK {
        connect_timeout 3
        delay_before_retry 3
        connect_port 80
    }
    }
}
備份keepalived配置

發佈了15 篇原創文章 · 獲贊 3 · 訪問量 1216
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章