nginx的用途

一、HTTP本地代理

1、用户从浏览器中请求nginx目的:

请求/访问/找资源(文件)
向代理服务器找资源,但资源并不在代理那,资源交由代理服务器代理
本地目录:被nigix代理的目录,在本地服务器中

2、工作流程:

nginx的用途_第1张图片

3、应用场景:

①搭建一个图片服务器
②搭建一个网页服务器

4、资源路径:

如果没有写资源路径,默认返回192.168.20.20:81/index.html 首页
在这里插入图片描述
nginx的用途_第2张图片
直接访问192.168.20.20:81/abc.jpg会显示找不到该资源
nginx的用途_第3张图片
下载图片另存为abc.jpg 放入/usr/local/nginx/html中 即可 找到
nginx的用途_第4张图片
nginx的用途_第5张图片
被代理的本地路径是相对路径(不加"/"),nginx会从自己的安装目录中/usr/local/nginx开始找资源
nginx的用途_第6张图片
被代理的本地路径是绝对路径(加"/"),那么nginx会从系统的根开始找资源
nginx的用途_第7张图片
如果被代理的路径在某个用户的家, 需要在第二行处指定该用户名, 否则nginx没有权限进入用户的家
例如: 代理路径在xiaoming的家里,直接访问192.168.20.20/abc.jpg会显示可以找到,但是没有权限访问资源
nginx的用途_第8张图片
那么要将#user nobody; 改为 user xiaoming;
nginx的用途_第9张图片
则访问成功
nginx的用途_第10张图片

二、正向代理

1、应用场景:

①搭建一个服务器
外地目录:代理外地(eg:中国访问淘宝)

2、工作流程:

eg:用户访问谷歌,中间有防火墙拦截,没办法直接访问
用户 —>> 请求nginx —>> 请求淘宝
淘宝 —>> 返回给nginx —>> 返回给用户
nginx此时相当于充当一个浏览器的作用
nginx的用途_第11张图片

3、配置:

进入/usr/local/nginx/conf/nginx.conf修改
在这里插入图片描述
退出保存并重启nginx,直接访问192.168.20.20:81即虚拟机地址
nginx的用途_第12张图片

4、url地址(http地址)

完整格式:http://IP:PORT/请求的资源路径
浏览器会自动为url地址的前面加上"http://",并默认走 :80端口
192.168.10.11/资源路径—>http://192.168.10.11:80/资源路径
www.taobao.com/资源路径—>http://www.baobao.com:80/资源路径
自己在配置文件中必须全写,不能少!!!!

三、反向代理/负载均衡

任何一个网页只应该暴露给用户一个唯一的入口
nginx的用途_第13张图片

1、如果直接让用户请求应用服务器

弊端:
① 应用服务器数量太多,导致入口IP地址太多
② 如果用户集中请求其中一台,会造成负载过高,服务器崩溃,也会造成没有被请求的服务器处于空闲

2、搭建负载均衡服务器

好处:不会让一台服务器处于空闲,也不会让其负载过高,导致崩溃

3、应用场景:

为其他的服务器集群做负载均衡
规模取决于各自需求

4、准备实验环境

① 准备三台虚拟机, 模拟应用服务器(本地代理)
nginx-01 192.168.20.21
nginx-02 192.168.20.22
nginx-03 192.168.20.23
② 三台虚拟机分别修改主机名和IP地址

vim /etc/hostname
vim /etc/sysconfig/network-scripts/ifcfg-ens33

③ 准备一台负载均衡服务器
192.168.20.20
④ 负载均衡服务器反向代理三台应用服务器
定义被反向代理的应用服务器集合,
集合名一般根据网站名命名,每一个server代表一台应用服务器,后面跟上IP地址及端口号

upstream test{
  server 192.168.20.21:80 weight=10;
  server 192.168.20.22:80 weight=5;
  server 192.168.20.23:80 weight=1;
}

在location中指定代理到服务器集合

server{
	.....
	location / {
    	proxy_pass http://test;
	}
	.....
}

访问反向代理服务器192.168.20.20会不停地在192.168.20.21/22/23之间转换
nginx的用途_第14张图片
add_header Cache-Control no-store;禁止缓存
nginx的用途_第15张图片
该指令可以实现服务器实时更新和防止恶意或妥协缓存指令以及防止受到偷听

5、负载均衡算法

① 轮询(默认,服务器的性能比较平均)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,会自动剔除
② 加权轮询模式(服务器的性能参差不齐)
能力强的服务器加权多出力请求, 能力弱的服务器减权少处理
指定轮询几率,weight和访问比率成正比
③ ip_hash(不会用)
nginx的用途_第16张图片
根据用户的ip地址做hash运算, 让同一个ip的用户的多次请求落在同一台应用服务器上
优点: 用户的状态可以保持
缺点: 负载均衡无意义(若设备故障)
④ url_hash(不会用)
根据访问url做hash运算,使相同的url请求落在同一台应用服务器上
⑤ fair(不会用)
按应用服务器的响应时间来分配请求,响应时间短的优先分配

6、服务器的状态设置

① down
表示单前的server暂时不参与负载
eg:后台发现第一台温度过高或出现异常是,让第一台不参与负载均衡(直接被跳过)
nginx的用途_第17张图片
当负载均衡服务器发现某个服务器崩溃的时候,会自动把该服务器踢掉
eg:手动kill第二台,模拟崩溃,若恢复,则重新被纳入负载均衡服务器中
② weight
默认为1,weight越大,负载的权重就越大
weight大,性能好,访问次数多;weight小,性能差,访问次数少
nginx的用途_第18张图片
nginx的用途_第19张图片
③ max_fails:
允许请求失败的次数默认为1,当超过最大次数时,返回proxy_next_upstream模块定义的错误
④ fail_timeout:
max_fails次失败后暂停的时间
⑤ backup:
其它所有的非backup机器down或者忙的时候,请求backup机器,backup机器将会开始投入工作
nginx的用途_第20张图片

你可能感兴趣的:(操作系统,nginx,服务器,http)