1、什么是Nginx

Nginx是一个高性能的HTTP和反向代理服务器。同时也是一个 IMAP/POP3/SMTP 代理服务器。

2、Nginx主要特性

  1. 支持SSL 和TLSSNI.
    Nginx它支持内核Poll模型,能经受高负载的考验,有报告表明能支持高达50,000个并发连接数。
  2. Nginx具有很高的稳定性。
    例如当前 apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基本上是毫无用处的。
  3. Nginx支持热部署。
    它的启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。对软件版本进行进行热升级。
  4. Nginx采用master-slave模型,能够充分利用SMP的优势,且能够减少工作进程在磁盘IO的阻塞延迟。
    当采用select()/poll()调用时,还可以限制每个进程的连接数。
  5. Nginx采用master-slave模型,能够充分利用SMP的优势,且能够减少工作进程在磁盘IO的阻塞延迟。
    当采用select()/poll()调用时,还可以限制每个进程的连接数。
  6. Nginx采用了一些os提供的最新特性如对sendfile (Linux2.2+), accept-filter
    (FreeBSD4.1+),TCP_DEFER_ACCEPT (Linux 2.4+)的支持,从而大大提高了性能。
  7. 免费开源,可以做高并发负载均衡。

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负载均衡的几种算法

  1. 轮询模式(默认)
    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
  2. 权重模式
    指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
  3. IP_HASH模式(IP散列)
    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
  4. url_hash模式
    按照访问的URL的hash结果来分配请求,使每个URL定向到同一个后端服务器。
  5. fair模式
    按后端服务器的响应时间来分配请求,响应时间短的优先分配。

6、Nginx的进程模型

  1. master-worker模式
    在master-worker模式下,有一个master进程和至少一个的worker进程。
  2. 单进程模式。
    单进程模式只有一个进程。

7、如何定义错误提示页面

#error_page 500 502 503 504 /50x.html;
location = /50x.html {
 root /root; 
 }

8、如何精准匹配路径

location = /get { 
#规则 A 
}

9、路径匹配优先级

多个location 配置的情况下匹配顺序为

  1. 首先匹配 =
  2. 其次匹配 ^~
  3. 再其次是按文件中顺序的正则匹配
  4. 最后是交给 / 通用匹配。

当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

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、开启压缩功能的好坏

  1. 好处:压缩是可以节省带宽,提高传输效率。
  2. 坏处:但是由于是在服务器上进行压缩,会消耗服务器起源

结束!


“人这一生,总要放弃很多东西”
											“包括我?”
										   “对,包括你!”