nginx 代理和负载均衡

2016-12-26 浏览:582
nginx 代理和负载均衡
评论:(0)复制地址
netstat -ant | awk '/:80\>/{S[$NF]++}END {for(A in S) print A, S[A]}'  用来统计当前连接数
访问wen服务器动作 GET,POST,PUT,TRACE,OPTIONS,COMMECTION,DELETE
nginx 代理
1.需要在server{} 上下文中添加location
location / {
proxy_pass http://14.215.177.38;
proxy_set_hearder X-Real-IP $remote_addr;
}
proxy_set_hearder X-Real-IP  :发送client IP 报文头部,让服务器记录client访问IP,而不是记录代理IP。如果不加这个参数。后端服务记录的是代理的IP地址。记录代理的IP地址没有意义
2,nginx  实现负载均衡。
nginx 有三种负载均衡算法。当upstream 使用 weight 时默认算法是round-robin。如果没有使用算法。是没有开启负载均衡。
1.round-robin
2.ip_hash       客户端第一次访问服务器。分发到那台服务器。以后再连接始终分发到那台服务商。直到服务宕机。当负载均衡使用ip_hash算法。weight 权重就没有意义了。
3.least_conn    最少连接
实现负载均衡需要用一个upstream模块。这个模块必须定义在server之外。
upstream nginx_web {
server 192.168.1.10 weight=1 max_fails=2 fail_timeout=2 ;
server 192.168.1.11 weight=1 max_fails=2 fail_timeout=2 ;
server 127.0.0.1:8080 backup;
}
server: 后面不能使用http协议。
upstream: 后面的名称可以自定义。
weight : 权重。如果weight 的值不相同,那个值高。处理请求就高。如果不写weight。默认是轮询。
upstream 健康状态检测。
max_fails=2  错误最大重试次数。
fail_timeout=2  每隔两秒重试错误连接。如果不知道timeout时间 默认为10秒。
max_fails=2 fail_timeout=2  重试两次。四秒之后开始切换。
backup:  当两台做负载的服务都宕机了。在客户端在请求服务器,刷新出来页面就是 127.0.0.1:8080 这台虚拟主机定义的错误页面。
upstream 定义好之后,需要在server{}上下文中。启用一个location用来反向代理。代理的是upstream
location / {
proxy_pass http://nginx_web;
proxy_set_hearder X-Real-IP $remote_addr;
proxy_cache nginx;  调用nginx 缓存
proxy_cache off;      关闭缓存功能
proxy_cache_valid 200 301 1h;   当客户端请求返回状态码是200和301时 就缓存1小时。
proxy_cache_valid 302 10m;当客户端请求返回状态码是302时 就缓存10分钟
proxy_cache_valid any 1m;     其他的都缓存1分钟
}
如果当两个服务器都宕机了。应该提供一个错误页面。返回客户端。
在定义一个虚拟主机提供错误页面。
server {
server localhost;
listen 8080;
root /data/error;
index index.html index.php;
}
nginx 缓存设置。
cache :共享内存:存储键和缓存对象元数据
磁盘空间 : 存储数据
proxy_cache_path :  不能定义在server{}上传文中
proxy_cache_path  /data/cache/nginx  levels=1:2 keys_zone=nginx:20m max_size=10g;
缓存目录,目录级别
proxy_cache_path  /data/cache/nginx  用来存放nginx 缓存文件路径
levels=1:2  缓存目录级别 这是二级别,最多只能设置3级别。1:2 表示: 1级目录用1个字符保存目录名,1级目录下有1个二级目录用两个字符保存二级目录名。
keys_zone=nginx:20m 用20m内存空间来缓存对象元数据,nginx:20m  nginx这个名称可以自定义,这个名称很关键。这是开启了缓存功能,还没有开始缓存,location中要调用这个nginx 才算开启缓存功能。
max_size=10g  缓存目录空间最大为10G.当缓存目录超过10G空间之后有 cache_manager 进行管理缓存空间。
在server{}中添加一个报文头部。在浏览器中可以看看是由那台服务器缓存的。
add_header X-Via $server_addr;
add_header  X_cache  $upstream_cache_status;    查看缓存状态值。
也可以写成这样
add_header X_cache  "$upstream_cache_satus from $server_addr;


评论:(0)复制地址
发布:latte | 分类:Nginx | Tags:

相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。