一、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配置