nginx 负载均衡的配置主要用的是upstream_module。
官方文档:http://nginx.org/en/docs/http/ngx_http_upstream_module.html
Nginx 请求执行过程分析
location 相关参数与配置
root #站点根路径
index #首页
proxy_pass # 代理服务
proxy_redirect off; # 是否允许重定向
proxy_set_header Host $host; # 传 header 参数至后端服务
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 90; # 连接代理服务超时时间
proxy_send_timeout 90; # 请求发送最大时间
proxy_read_timeout 90; # 读取最大时间
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
upstream dynamic { //upstream 名称
zone upstream_dynamic 64k;
server backend1.example.com weight=5; //权重
server backend2.example.com:8080 fail_timeout=5s slow_start=30s; //fail_timeout踢出后,重新探测时间;slow_start当节点恢复,不立即加入过30s之后再启用
server 192.0.2.1 max_fails=3; //失败多少次认为主机已挂掉,踢出
server backend3.example.com resolve;
server backend4.example.com service=http resolve;
server backup1.example.com:8080 backup; //备用的服务1
server backup2.example.com:8080 backup; //备用的服务2
}
server {
location / {
proxy_pass http://dynamic;
health_check;
}
}
upstream 参数
service 反向服务地址 加端口
weight 权重
max_fails =1 失败多少次 认为主机已挂掉则,踢出
fail_timeout 踢出后重新探测时间
backup 备用服务
max_conns 允许最大连接数
slow_start 当节点恢复,不立即加入
nginx 负载算法
算法 | 释义 |
---|---|
ll + weight | 默认的是轮询+权重 |
ip_hash | 给予hash计算,用户保持session一致性 |
url_hash: | (第三方) 应用场景:静态资源缓存,节约存储,加快速度 |
least_conn | 最少链接 |
least_time | 最小的响应时间,计算节点平均响应时间,然后取响应最快的那个,分配更高权重。 |
Nginx 应用实战
动静分离实现
有三种方案可以实现动静分离
基于目录实现
基于正则表达示判断文件后缀实现
动静分离配置
location \ {
proxy_pass http://tl_dynamic;
}
location ~ \.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {
proxy_pass http://tl_static;
}
防盗链实现
location ~* \.(gif|png|jpg|swf|flv)$ {
root html;
valid_referers none blocked *.tl.com;
if ($invalid_referer) {
rewrite ^/ http://www.tl.com/image/403.png;
#return 404;
}
}
城市静态站点实现
server {
listen 80;
server_name *.tl.com;
root /data/www/$host;
access_log logs/$host.access.log;
location / {
index index.html;
}
}