一、动静分离
动静分离指的是将动态内容和静态内容分开处理。动态内容通常由后端应用程序生成,例如PHP、Python或Node.js,静态内容则包括图片、CSS、JavaScript等文件。
例子:
#代理服务器一
server{
listen 80;
server_name www.dj.com;
root /data/nginx/dj;
location / {
root /data/nginx/dj;
}
#处理动态文件请求
location ~* \.(api|php)$ {
proxy_pass http://192.168.10.10;
}
#处理静态文件请求
location ~* \.(jpg|jpeg|png|gif|bmp)$ {
proxy_pass http://192.168.10.20;
}
}
#随后配置两台后台服务器的处理请求的配置即可以实现动静分离
二、反向代理
反向代理:reverse proxy,指的是代理外网用户的请求到内部的指定的服务器,并将数据返回给用户的一种方式,这是用的比较多的一种方式。
1.单台反向代理
例子:
# 代理服务器
server {
......
proxy_pass http://192.168.10.101;
}
#真实服务器通过http或nginx提供需要的文件
2.反向代理负载均衡
在上一个节中Nginx可以将客户端的请求转发至单台后端服务器但是无法转发至特定的一组的服务器,而且不能对后端服务器提供相应的服务器状态监测,Nginx 可以基于ngx_http_upstream_module模块提供服务器分组转发、权重分配、状态监测、调度算法等高级功能
#自定义一组服务器,配置在http块内
#一定要写在server模块上面
upstream web {
server 192.168.91.20
server 192.168.91.101
}
location / {
pass_proxy http://web/
}
#然后配置两台真实服务器来提供服务
访问代理服务器可以看代理服务器把消息轮流转发给后台服务器
相关语法
#server支持的parameters如下:
weight=number #设置权重,默认为1,实现类似于LVS中的WRR,WLC等
max_conns=number #给当前后端server设置最大活动链接数,默认为0表示没有限制
max_fails=number #后端服务器的下线条件,当客户端访问时,对本次调度选中的后端服务器连续进行检测多少次,如果都失败就标记为不可用,默认为1次,当客户端访问时,才会利用TCP触发对探测后端服务器健康性检查,而非周期性的探测
fail_timeout=time #后端服务器的上线条件,对已经检测到处于不可用的后端服务器,每隔此时间间隔再次进行检测是否恢复可用,如果发现可用,则将后端服务器参与调度,默认为10秒
backup #设置为备份服务器,当所有后端服务器不可用时,才会启用此备用服务器 sorry server 自己不能转自己
down #标记为down状态
resolve #当server定义的是主机名的时候,当A记录发生变化会自动应用新IP而不用重启Nginx
例: