nginx功能
Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,特点是占用内存少(800多K),并发能力强
功能:反向代理,动静分离,负载均衡(session共享)
代理模式
正向代理: 代理服务器代理的是用户 知道访问的是谁,但过程中要去通过代理
反向代理: 代理服务器代理的是服务器 ,同时具有负载均衡功能,通过轮询实现 例如:去访问淘宝,但并不知道是哪个服务器给你提供的服务
Nginx与tomcat的动静分离
nginx负责访问静态资源文件包css,js,html,gif等,Tomcat负责访问动态资源包class,jsp等 实现动静分离
具体有配置文件nginx.conf中的location匹配规则来匹配访问路径
Nginx.conf配置文件
动静分离: 具体由location决定
#服务器端静态资源缓存,最大缓存到内存中的文件,不活跃期限
open_file_cache max=655350 inactive=20s; 有缓存所以多静态资源快,20秒不访问就淘汰
#活跃期限内最少使用的次数,否则视为不活跃。
open_file_cache_min_uses 2;
#验证缓存是否活跃的时间间隔
open_file_cache_valid 30s;
反向代理:
upstream myserver{
//负载均衡的策略共6中
# 1、轮询(默认)
# 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
# 2、指定权重
# 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
#3、IP绑定 ip_hash
# 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
#4、备机方式 backup
# 正常情况不访问设定为backup的备机,只有当所有非备机全都宕机的情况下,服务才会进备机。
#5、fair(第三方)
#按后端服务器的响应时间来分配请求,响应时间短的优先分配。
#6、url_hash(第三方)
#按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
# ip_hash;
server 192.168.161.132:8080 weight=1; //负载均衡
server 192.168.161.132:8081 weight=1;
server 192.168.161.132:8082 weight=1 backup; //备机模式:普通时不访问,另一台挂了之后就会访问
#fair
#hash $request_uri
#hash_method crc32
}
server配置:
server {
#监听端口号
listen 80;
#服务名
server_name 192.168.161.130;
#字符集
#charset utf-8;
#location [=|~|~*|^~] /uri/ { … }
# = 精确匹配
# ~ 正则匹配,区分大小写
# ~* 正则匹配,不区分大小写
# ^~ 关闭正则匹配
#匹配原则:
# 1、所有匹配分两个阶段,第一个叫普通匹配,第二个叫正则匹配。
# 2、普通匹配,首先通过“=”来匹配完全精确的location
# 2.1、 如果没有精确匹配到, 那么按照最大前缀匹配的原则,来匹配location
# 2.2、 如果匹配到的location有^~,则以此location为匹配最终结果,如果没有那么会把匹配的结果暂存,继续进行正则匹配。
# 3、正则匹配,依次从上到下匹配前缀是~或~*的location, 一旦匹配成功一次,则立刻以此location为准,不再向下继续进行正则匹配。
# 4、如果正则匹配都不成功,则继续使用之前暂存的普通匹配成功的location.
普通匹配和正则匹配都成功以正则匹配为准
location / { # 匹配任何查询,因为所有请求都已 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配。
#定义服务器的默认网站根目录位置
root html;
#默认访问首页索引文件的名称
index index.html index.htm;
#反向代理路径
proxy_pass http://myserver;
#反向代理的超时时间
proxy_connect_timeout 10;
proxy_redirect default;
}
location /images/ { #属于普通匹配 匹配任何已 /images/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试。
root images ;
}
location ^~ /images/jpg/ { #属于普通匹配 匹配任何已 /images/jpg/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试。
root images/jpg/ ;
}
location ~*.(gif|jpg|jpeg)$ { //工作中常用的,因为静态文件基本有后缀名,所以静态文件一帮都通过正则匹配来完成,没有的就转给tomcat处理
#所有静态文件直接读取硬盘
root pic ;
#expires定义用户浏览器缓存的时间为3天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力
expires 3d; #缓存3天
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}