Nginx学习笔记

Nginx

1.Nginx简介

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
1.反向代理
	反向代理:指的是用户要访问youtube,但是youtube悄悄地把这个请求交给后台N台服务器中的其中一台来做,这种方式就是反向代理了。
2.负载均衡策略
	1)使用硬件负载均衡策略,如使用F5,Array等负载均衡器.
	2)使用软件进行负载均衡
	3)如使用阿里云服务器均衡SLB
	4)使用我们今天所学习的Nginx+Keepalived
	5)其他软件负载均衡如LVS(Linux Virtual Server),haproxy等技术
3.Nginx优点:
Nginx 可以在大多数 UnixLinux OS 上编译运行,并有 Windows 移植版。 
Nginx 的源代码使用 2-clause BSD-like license。
Nginx 是一个很强大的高性能Web和反向代理服务器,它具有很多非常优越的特性:
	在连接高并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主	机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感	谢Nginx为我们选择了 epoll and kqueue作为开发模型。
4.环境搭建:
	步骤:

1.进行安装:tar -zxvf nginx-1.6.2.tar.gz -C /usr/local
2.下载所需要的依赖库文件:
   yum install pcre -y
   yum install pcre-devel -y
   yum install zlib -y
   yum install zlib-devel -y
3.进行configure配置,查看是否报错
   cd nginx-1.6.2
   ./configure --prefix=/usr/local/nginx
4.编译安装:make && make install
5.在 /usr/local/nginx目录下,可以看到如下4个目录
   conf配置文件,html网页文件,logs日志文件,sbin主要二进制程序
6.启动命令:/usr/local/nginx/sbin/nginx
  关闭命令:/usr/local/nginx/sbin/nginx -s stop
  重启命令:/usr/local/nginx/sbin/nginx -s reload
7.访问浏览器:http://192.168.122.133(看到欢迎页面说明没问题)
注意:如果出现这个错误:./configure: error: C compiler cc is not found
执行这个命令:yum -y install gcc gcc-c++ autoconf automake make

2.常用配置

2.1虚拟主机配置

nginx虚拟主机配置:   配置端口号,访问地址,访问默认路径

server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
}

2.2 日志文件

将nginx访问日志放在log/host.access.log下,并且使用main格式,可以支持自定义位置名字

对于main格式配置如下:
#日志文件输出格式这个位置相当于全局设置
#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
#                  '$status $body_bytes_sent "$http_referer" '
#                  '"$http_user_agent" "$http_x_forwarded_for"';
#access_log  logs/access.log  main;
查看日志内容命令:tail -n 100 -f access.log

2.3 location配置

语法规则: location [=|~|~*|^~] /uri/ { … }

= 开头表示精确匹配
^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。
~ 开头表示区分大小写的正则匹配
~*  开头表示不区分大小写的正则匹配
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则
/ 通用匹配,任何请求都会匹配到。

首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。
location = / {
   #规则A
}
location = /login {
   #规则B
}
location ^~ /static/ {
   #规则C
}
location ~ \.(gif|jpg|png|js|css)$ {
   #规则D
}
location ~* \.png$ {
   #规则E
}
location !~ \.xhtml$ {
   #规则F
}
location !~* \.xhtml$ {
   #规则G
}
location / {
   #规则H
}
那么产生的效果如下:

http://localhost/                       A  
http://localhost/login                  B
http://localhost/register               H
http://localhost/static/a.html          H C
http://localhost/a.gif                  D
http://localhost/b.jpg                  D
http://localhost/static/c.png           E  C
http://localhost/a.PNG                  H  E
http://localhost/a.xhtml                G  H
http://localhost/a.XHTML                F
http://localhost/category/id/1111       H

2.4 反向代理配置

配置反向代理:

proxy_pass url;
注意:反向代理之后,获取客户端ip地址为nginx服务器地址,这里需要nginx进行forward,设置真实的ip地址:

#设置客户端真实ip地址
proxy_set_header X-real-ip $remote_addr;

2.5负载均衡配置

轮询,权重,ip_hash

#设定负载均衡的服务器列表

	#upstream myproject {
		#weigth参数表示权值,权值越高被分配到的几率越大
		#max_fails 当有#max_fails个请求失败,就表示后端的服务器不可用,默认为1,将其设置为0可以关闭检查
		#fail_timeout 在以后的#fail_timeout时间内nginx不会再把请求发往已检查出标记为不可用的服务器
	#}

    #webapp
    #upstream myapp {   
  	# server 192.168.122.133:8080 weight=1 max_fails=2 fail_timeout=30s;   
	# server 192.168.122.134:8080 weight=1 max_fails=2 fail_timeout=30s;   
    #} 

3.搭建高可用环境

Keepalived简介
安装keepalived
	修改Master配置
	修改Slave配置
首先介绍一下Keepalived,它是一个高性能的服务器高可用或热备解决方案,Keepalived主要防止服务器单点故障的问题,可以通过其与Nginx的配合实现web服务器端的高可用.

Keepalived以VRRP协议为实现基础,使用VRRP协议来实现高可用性(HA).VRRP(Virtual Router Redundacy Protocol)协议用于实现路由器冗余的协议,VRRP协议将两台或多台路由器设备虚拟成一个设备,向外提供虚拟路由IP(一个或多个),如下图所示:

3.1安装步骤

第一步:安装keepalived依赖的包
	yum install -y gcc
    yum install -y openssl-devel
	yum install -y libnl3-devel
	yum install -y popt-devel
	yum install -y iptables-devel
	yum install -y libnfnetlink-devel
	yum install -y psmisc
第二步:编译安装keepalived
	将keepalived的安装包 上传到/usr/local/software 目录下  
	cd /usr/local/software
	tar -zxvf keepalived-1.2.19.tar.gz -C /usr/local  
	cd /usr/local/keepalived-1.2.19  
	./configure --prefix=/usr/local/keepalived  
	make && make install 
第三步:将 keepalived 安装成 Linux 系统服务
	安装完成之后, 需要做一些工作复制默认配置文件到 默认路径  
	mkdir /etc/keepalived  
	cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ 
	cp /usr/local/keepalived/sbin/keepalived /usr/sbin/  
	cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/  
	cd /usr/local/keepalived-1.2.19  
	cp ./keepalived/etc/init.d/keepalived.init /etc/init.d/
	chmod 755 /etc/init.d/keepalived.init 
第四步:编写nginx检测脚本:
vi /etc/keepalived/nginx_check.sh
内容如下:  
#!/bin/bash  
A=`ps -C nginx –no-header |wc -l`  
if [ $A -eq 0 ];then  
    /usr/local/nginx/sbin/nginx  
    sleep 2  
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then  
        killall keepalived  
    fi  
fi  
赋予执行权限  
chmod +x /etc/keepalived/nginx_check.sh 

3.2 master 主机

修改keepalived的Master配置文件:vi /etc/keepalived/keepalived.conf 
! Configuration File for keepalived       
global_defs {      
   router_id wolfcode                           ##路由器标志    
}    
# 集群资源监控,组合track_script进行    
vrrp_script check_haproxy {    
	script "/etc/keepalived/nginx_check.sh"  #检测 nginx 状态的脚本路径  
	interval 2  #检测时间间隔  
	weight -20  #条件成立 权重减20  
}    
vrrp_instance PROXY {    
	# 设置当前主机为主节点,如果是备用节点,则设置为BACKUP   
	state MASTER
	# 指定HA监测网络接口,可以用ifconfig查看来决定设置哪一个    
	interface ens33
	# 虚拟路由标识,同一个VRRP实例要使用同一个标识,主备机    
	virtual_router_id 80    
	# 因为当前环境中VRRP组播有问题,改为使用单播发送VRRP报文  如果VRRP组播没问题,以下这块的内容可以注释掉。  
	# 这个地方需要关注,之前未做此设置,结果主备节点互相不能发现,因此主备节点都升级成了MASTER,并且绑定了VIP    
	# 主节点时,内容为:    
	unicast_src_ip 192.168.117.130
	# 设置优先级,确保主节点的优先级高过备用节点  
	priority 100    
	# 用于设定主备节点间同步检查时间间隔    
	advert_int 2    
	# 设置主备节点间的通信验证类型及密码,同一个VRRP实例中需一致    
	authentication {    
		auth_type PASS    
		auth_pass wolfcode
	}    
	# 集群资源监控,组合vrrp_script进行    
	track_script {    
		check_haproxy    
	}    
	# 设置虚拟IP地址,当keepalived状态切换为MASTER时,此IP会自动添加到系统中    
	# 当状态切换到BACKUP时,此IP会自动从系统中删除    
	# 可以通过命令ip add查看切换后的状态    
	virtual_ipaddress {    
		192.168.117.110  #虚拟ip配置完之后就用它访问    
	}    
}  

3.3 slave 分机

修改keepalived的Slave配置文件:vi /etc/keepalived/keepalived.conf 
! Configuration File for keepalived       
global_defs {      
   router_id wolfcode                           ##路由器标志    
}    
# 集群资源监控,组合track_script进行    
vrrp_script check_haproxy {    
	script "/etc/keepalived/nginx_check.sh"  #检测 nginx 状态的脚本路径  
	interval 2  #检测时间间隔  
	weight -20  #条件成立 权重减20  
}    
vrrp_instance PROXY {    
	# 设置当前主机为主节点,如果是备用节点,则设置为BACKUP   
	state BACKUP  
	# 指定HA监测网络接口,可以用ifconfig查看来决定设置哪一个    
	interface ens33
	# 虚拟路由标识,同一个VRRP实例要使用同一个标识,主备机    
	virtual_router_id 80    
	# 因为当前环境中VRRP组播有问题,改为使用单播发送VRRP报文  如果VRRP组播没问题,以下这块的内容可以注释掉。  
	# 这个地方需要关注,之前未做此设置,结果主备节点互相不能发现,因此主备节点都升级成了MASTER,并且绑定了VIP    
	# 主节点时,内容为:    
	unicast_src_ip 192.168.117.133
	# 设置优先级,确保主节点的优先级高过备用节点  
	priority 90    
	# 用于设定主备节点间同步检查时间间隔    
	advert_int 2    
	# 设置主备节点间的通信验证类型及密码,同一个VRRP实例中需一致    
	authentication {    
		auth_type PASS    
		auth_pass wolfcode
	}    
	# 集群资源监控,组合vrrp_script进行    
	track_script {    
		check_haproxy    
	}    
	# 设置虚拟IP地址,当keepalived状态切换为MASTER时,此IP会自动添加到系统中    
	# 当状态切换到BACKUP时,此IP会自动从系统中删除    
	# 可以通过命令ip add查看切换后的状态    
	virtual_ipaddress {    
		192.168.117.110  #虚拟ip配置完之后就用它访问    
	}    
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值