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