nginx的使用

一、nginx介绍

nginx是轻量级的web服务器,抗并发,只分发请求,不做处理;多个连接(万级别)可以对应一个进程;处理静态文件十分友好。

二、反向代理

在服务器端接收客户端的请求,然后把请求分发给具体的服务器进行处理,然后再将服务器的响应结果反馈给客户端。

==conf配置文件==

1
2
3
4
5
6
7
8
9
server {
listen 80;
server_name localhost; //设置访问的域名
client_max_body_size 1024M; // 设置允许客户端请求的最大单个文件字节数
location / {
proxy_pass http://www.baidu.com;
}

}

三、负载均衡

客户端发送请求到反向代理服务器,反向代理服务器将请求按照一定的规则分发到不同的服务器进行处理,共同完成工作任务。

==五种算法==

轮询算法(默认)

按照时间顺序依次将请求分配到各台服务器当中,挂掉的服务器自动从列表中剔除

1
2
3
4
upstream bakend {
server 192.168.0.1;
server 192.168.0.2;
}
轮询权重算法

weight的值越大分配访问到的概率越高,主要用于后台服务器性能不均衡的情况下,或者在主从的情况下设置不同的权值,达到合理有效的利用主机资源。

1
2
3
4
upstream bakend {
server 192.168.0.1 weight=10;
server 192.168.0.2 weight=10;
}
p_hash(不常用)

每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题。

1
2
3
4
5
upstream bakend {  
ip_hash;
server 192.168.0.1:88;
server 192.168.0.2:80;
}
url_hash(不常用)

按访问的URL的哈希结果来分配请求,使每个URL定向到同一台后端服务器,可以进一步提高后端服务器缓存的效率。Nginx本身不支持url_hash,需要安装Nginx的hash软件包。

1
2
3
4
5
6
upstream backend {  
server 192.168.0.1:88; //使用hash语句时,不能在使用weight等其他参数
server 192.168.0.2:80;
hash $request_uri;
hash_method crc32; //使用hash算法
}
fair算法(不常用)

fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身不支持fair,要安装upstream_fair模块才能使用。

1
2
3
4
5
upstream backend {  
server 192.168.0.1:88;
server 192.168.0.2:80;
fair;
}

四、动静分离

Nginx是静态资源的服务器,访问http://localhost 会默认访问/root目录下面的index.html静态网页,所以静态资源可以直接放在Nginx上,动态请求由相应的后端服务器处理,实现动静分离。

1
2
3
4
5
6
7
8
9
10
11
//静态网页
server {
listen 80; //端口
server_name localhost; //主机域名
client_max_body_size 1024M; //设置允许客户端请求的最大的单个文件字节数

location / {
root /root; //网站根目录
index index.html; //默认发布页面
}
}