1、什么是Nginx
Nginx是一个高性能的HTTP和反向代理服务器。同时也是一个 IMAP/POP3/SMTP 代理服务器。
2、Nginx主要特性
- 支持SSL 和TLSSNI.
Nginx它支持内核Poll模型,能经受高负载的考验,有报告表明能支持高达50,000个并发连接数。 - Nginx具有很高的稳定性。
例如当前 apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基本上是毫无用处的。 - Nginx支持热部署。
它的启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。对软件版本进行进行热升级。 - Nginx采用master-slave模型,能够充分利用SMP的优势,且能够减少工作进程在磁盘IO的阻塞延迟。
当采用select()/poll()调用时,还可以限制每个进程的连接数。 - Nginx采用master-slave模型,能够充分利用SMP的优势,且能够减少工作进程在磁盘IO的阻塞延迟。
当采用select()/poll()调用时,还可以限制每个进程的连接数。 - Nginx采用了一些os提供的最新特性如对sendfile (Linux2.2+), accept-filter
(FreeBSD4.1+),TCP_DEFER_ACCEPT (Linux 2.4+)的支持,从而大大提高了性能。 - 免费开源,可以做高并发负载均衡。
3、Nginx常用命令
3.1、启动
nginx
3.2、停止
nginx -s stop
或
nginx -s quit
3.3、重载配置
./sbin/nginx -s reload(平滑重启 )
或
service nginx reload
3.4、重载指定配置文件
.nginx -c /usr/local/nginx/conf/nginx.conf
3.5、查看版本
nginx -v
3.6、检查配置文件是否正确
nginx -t
3.7、显示帮助命令
nginx -h
4、工作模式以及连接数上限
events {
use epoll; #epoll 是多路复⽤ IO(I/O Multiplexing)中的⼀种⽅式,但是仅⽤于 linux2.6
#以上内核,可以⼤⼤提⾼ nginx 的性能
worker_connections 1024;#单个后台 worker process 进程的最⼤并发链接数
# multi_accept on;
}
5、Nginx负载均衡的几种算法
- 轮询模式(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 - 权重模式
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 - IP_HASH模式(IP散列)
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 - url_hash模式
按照访问的URL的hash结果来分配请求,使每个URL定向到同一个后端服务器。 - fair模式
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
6、Nginx的进程模型
- master-worker模式
在master-worker模式下,有一个master进程和至少一个的worker进程。 - 单进程模式。
单进程模式只有一个进程。
7、如何定义错误提示页面
#error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /root;
}
8、如何精准匹配路径
location = /get {
#规则 A
}
9、路径匹配优先级
多个location 配置的情况下匹配顺序为
- 首先匹配 =
- 其次匹配 ^~
- 再其次是按文件中顺序的正则匹配
- 最后是交给 / 通用匹配。
当有匹配成功时候,停止匹配,按当前匹配规则处理请求。
10、如何将请求转发给后端应用服务器
location = / {
proxy_pass http://tomcat:8080/index
}
11、根据文件类型设置过期时间
location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
if (-f $request_filename) {
expires 1h;
break;
}
}
12、禁止访问某个目录
location ^~/path/ {
deny all;
}
13、Nginx负载均衡实现过程
首先在http模块中配置使用upstream模块定义后台的webserver的池子,名为proxy-web,在池子中我们可以添加多台后台webserver,其中状态检查、调度算法都是在池子中配置;然后在serverr模块中定义虚拟主机,但是这个虚拟主机不指定自己的web目录站点,它将使用location 匹配url然后转发到上面定义好的web池子中,最后根据调度策略再转发到后台web server上。
14、负载均衡配置
Upstream proxy_nginx {
server 192.168.0.254 weight=1max_fails=2 fail_timeout=10s ;
server 192.168.0.253 weight=2 max_fails=2fail_timeout=10s;
server192.168.0.252 backup; server192.168.0.251 down;
}
server{
listen 80;
server_name xiaoka.com;
}
location / {
proxy_pass http:// proxy_nginx;
proxy_set_header Host
proxy_set_header X-Real-IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
15、设置超时时间
http {
keepalive_timeout 60; ###设置客户端连接保持会话的超时时间,超过这个时间,服务器会关闭该连接。
tcp_nodelay on; ####打开 tcp_nodelay,在包含了 keepalive 参数才有效
client_header_timeout 15; ####设置客户端请求头读取超时时间,如果超过这个时间,客户端还没有发送任何数据, Nginx 将返回“Request time out(408)”错误
client_body_timeout 15;####设置客户端请求主体读取超时时间,如果超过这个时间,客户端还没有发送任何数据, Nginx 将返回“Request time out(408)”错误
send_timeout 15; ####指定响应客户端的超时时间。这个超过仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx 将会关闭连接。
}
16、开启压缩功能的好坏
- 好处:压缩是可以节省带宽,提高传输效率。
- 坏处:但是由于是在服务器上进行压缩,会消耗服务器起源
结束!
“人这一生,总要放弃很多东西”
“包括我?”
“对,包括你!”