这是我参与2022首次更文挑战的第25天,活动详情查看:2022首次更文挑战
实现负载均衡
Nginx分配服务器策略
-
第一种 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
-
第二种 weight
weight 代表权重默认为 1,权重越高被分配的客户端越多
-
第三种 ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器
-
第四种 least_conn(最少连接数)
在一些要求需要更长的时间才能完成的应用情况下, 最少连接可以更公平地控制应用程序实例的负载。使用最少连接负载均衡,Nginx不会向负载繁忙的服务器上分发请求,而是将请求分发到负载低的服务器上。
-
第五种 fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
-
第六种 url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
| 名称 | 模式 |
|---|---|
| 轮询 | 默认方式 |
| weight | 权重方式 |
| ip_hash | 依据ip分配方式 |
| least_conn | 最少连接方式 |
| fair(第三方) | 响应时间方式 |
| url_hash(第三方) | 依据URL分配方式 |
Nginx.conf(注意在http块中)
http {
......
#负载均衡
upstream myserver{
#ip_hash; #每个请求安访问的ip结果分配,这样每个访客固定访问这一个服务器,可以解决session的问题
#least_conn
server xxx.xxx.xxx.xxx:8080; #weight=1 ,设置权重
server xxx.xxx.xxx.xxx:8081; #weight=1
#fair 根据响应时间来分配
}
}
default.config
server {
listen 80;
server_name 39.97.180.158;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
#root html;
proxy_pass http://39.97.180.158:8080;
index index.html index.htm index.jsp;
}
location ~ /test/b.html {
proxy_pass http://39.97.180.158:8081;
}
#负载均衡
location ~ /test01/a.html{
proxy_pass http://myserver;
}
}
实现动静分离
两种方法:一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开。
#实现动静分离,此静态文件在nginx服务器中
location ~ /www/{
root /data/;
index index.html index.jsp index.htm;
}
#实现动静分离,此静态文件在nginx服务器中
location ~ /image/{
alias /data/image/;
autoindex on; #即打开了目录浏览功能
}