Nginx有两类进程,一类称为Master进程(相当于管理进程),另一类称为Worker进程(实际工作进程)。
利用epoll模型,基于事件响应,监听某个事件,处理后接着监听其他事件,直到事件到达后处理,不会一直等着,比如等一个http请求从建立连接到响应,占用一个线程,nginx可以一个线程处理多个连接,降低服务器压力
OSI的7层从上到下分别是
7 应用层 应用服务层HTTP服务
6 表示层 不能系统间通信
5 会话层 建立连接、管理会话
4 传输层 提供端对端接口,TCP协议,保证完整性,UDP,保证速度
3 网络层 IP寻址\路由
2 数据链路层 定义传输格式,校验格式
1 物理层 设备
现在的7层负载均衡,主要还是着重于应用HTTP协议,所以其应用范围主要是众多的网站或者内部信息平台等基于B/S开发的系统。 4层负载均衡则对应其他TCP应用,例如基于C/S开发的ERP等系统,4层负载均衡效率更高。
【个人见解】针对nginx在7层网络模型的位置:nginx提供端对端的接口,如提供80端口给客户端,将请求代理给服务端某个ip和端口,因此它用到了网络层、传输层。它提供了建立连接、管理会话等功能,因此用到了会话层,nginx无视请求和响应放的系统差异,因此涵盖了表示层,通过nginx提供一个服务,因此还用到了应用层
events
{
use epoll;
worker_connections 65535;
}
proxy_cache_path /export/nginx_cache/xs levels=1:2 keys_zone=xs_cache:5000m inactive=8h max_size=20g;
keys_zone=xs_cache:5000m cache名称:共享内存大小为5G
levels=1:2 表示两级目录
inactive=8h 8小时无人访问就删除
max_size:最大缓存时间
upstream tomcat_1 {
server 127.0.0.1:80 weight=10 max_fails=2 fail_timeout=30s;
}
location ~* ^/x1/(2|3).*\.html {
proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;
proxy_cache_use_stale error timeout;
proxy_cache xs_cache;
proxy_cache_valid 200 304 10m;
proxy_cache_key $host$uri;
proxy_pass http://tomcat_1;
//proxy_pass http://localhost:8091/;
}
location ~ /purge(/.*)
{
error_page 404 500 502 503 504 @purge_error;
set $var1 $1;
set $cache_key $host$var1$is_args$args; //默认为静态资源,cache_key带参数
if ( $uri ~* .*\.html$){
set $cache_key $host$var1; //html,cache_key不带参数
}
allow 10.0.0.0/8;
allow 172.0.0.0/8;
deny all;
proxy_cache_purge xs_cache $cache_key;
}
较高的Windows版本上无法测试cache模块