这里写目录标题
一、Nginx介绍
nginx是轻量级web服务器,抗并发,只分发请求,不做处理;多个连接(万级别)可以对应一个进程;处理静态文件十分好。
二、Nginx的反向代理
1、原理如图所示
客户端通过internat给服务器发送请求,nginx反向代理服务器收到请求,通过内网IP地址,分发给内部网络的某台服务器处理,并将处理结果返回给internet上请求连接的客户端。
2、反向代理的作用
- 保证了内网的安全,通常将反向代理即前端服务器作为公网访问地址,Web服务器是内网
- 实现负载均衡,通过反向代理服务器来优化网站的负载
3、总结
反向代理代理的是服务端,代服务端接收请求。主要用于服务集群分布式部署的情况下,反向代理隐藏了服务器信息
4、反向代理服务器配置
server {
listen 80;
server_name localhost; //设置访问的域名
client_max_body_size 1024M; //设置允许客户端请求的最大的单个文件字节数
location / {
proxy_pass http://localhost:8080; //设置被代理服务器的端口或套接字,以及URL
proxy_set_header Host $host:$server_port;
}
}
三、Nginx的正向代理
1、原理如下所示
客户端在十分明确要访问的原始服务器地址的条件下,设定正向代理服务器(知正向代理服务器的IP地址和端口号)。客户端a发送指定目标(原始服务器)的请求到代理服务器,代理服务器转交请求并获得内容返回给客户端。
2、负载均衡的五种算法
(1)可以实现访问原来无法访问的资源
(2) 做缓存,加速访问资源
(3)对客户端访问授权,上网进行认证
(4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
3、总结
正向代理的是客户端,代客户端接收请求,隐藏了客户端信息。客户端要非常明确要访问的服务器地址。
4、正向代理服务器配置
resolver 114.114.114.114 ; //配置正向代理的DNS服务器
server {
resolver_timeout 5s;
listen 81; //正向代理的监听端口
access_log e:\wwwroot\proxy.access.log;
error_log e:\wwwroot\proxy.error.log;
location / {
proxy_pass http://$host$request_uri;
}
} // 使用服务器ip+端口号来进行代理
三、负载均衡
1、原理如下所示
客户端发送请求到反向代理服务器,反向代理服务器将请求按照一定的规则分发到不同的服务器进行处理,共同完成工作任务。
2、负载均衡的五种算法
-
round robin 轮询 (默认)
按时间顺序依次将请求分配到各个后台服务器中,挂掉的服务器自动从列表中剔除upstream bakend { server 192.168.0.1 down; server 192.168.0.2; }
-
weight 轮询权重
weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下,或在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。upstream bakend { server 192.168.0.1 weight=10; server 192.168.0.2 weight=10; }
-
ip_hash
每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题。
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软件包。
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模块才能使用。
upstream backend {
server 192.168.0.1:88;
server 192.168.0.2:80;
fair;
}
四、nginx的热加载
Nginx 是支持热启动的,当我们修改配置文件后,不用关闭 Nginx,就可以让配置生效
-
启动
① /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf //nginx安装目录地址 -c nginx配置文件地址(第一次启动)
②systemctl start nginx
③/usr/local/nginx/sbin/nginx
④ nginx.exe -s reload (Windows)
-
停止
①systemctl stop nginx
②/usr/local/nginx/sbin/nginx -s stop
-
重启
①systemctl restart nginx
②/usr/local/nginx/sbin/nginx -s reload
五、动静分离
Nginx是静态资源的服务器,访问http://localhost 会默认访问/root目录下面的index.html静态网页,所以静态资源可以直接放在Nginx上,动态请求由相应的后端服务器处理,实现动静分离。
//静态网页
server {
listen 80; //端口
server_name localhost; //主机域名
client_max_body_size 1024M; //设置允许客户端请求的最大的单个文件字节数
location / {
root /root; //网站根目录
index index.html; //默认发布页面
}
}