1. nginx配置文件
用户在浏览器上输入,http://www.xwld.site/ 实际上是在访问服务器80端口,nginx 监听80端口,将用户的请求转发到8080和9080端口
1. upstream www.xwld.site{ 2. server www.xwld.site:8080; 3. server www.xwld.site:9080; 4. } 5. server { 6. listen 80; 7. autoindex on; 8. server_name www.xwld.site xwld.site; 9. access_log /usr/local/nginx/logs/access.log combined; 10. index index.html index.htm index.jsp index.php; 11. if ( $query_string ~* ".*[;'<>].*" ){ 12. return 404; 13. } 14. location = / { 15. root /product/front/mmall_fe/dist/view; 16. index index.html; 17. } 18. 19. location ~ .*.html$ { 20. root /product/front/mmall_fe/dist/view; 21. index index.html; 22. } 23. location / { 24. proxy_pass http://www.xwld.site/; 25. } 26. location ~ .*.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ { 27. proxy_pass http://www.xwld.site; 28. expires 30d; 29. } 30. location ~ .*.(js|css)?$ { 31. proxy_pass http://www.xwld.site; 32. expires 7d; 33. } 34. }
nginx 配置负载均衡的时候,可以修改上面的配置文件,新增多个服务器ip,也可以指定客户端请求到服务器的对应策略
2. Nginx负载均衡配置策略
常见的策略有轮询、权重、ip_hash、fair等
2.1 轮询
默认就是轮询的方式,轮询的方式,每个请求会按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
优点
实现简单,不要配置
缺点
不考虑每台服务器处理能力。
示例:
upstream www.xwld.site{ server www.xwld.site:8080; server www.xwld.site:9080; }
2.2 权重(weight)
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,在实际生产环境中用的最多。
优点
考虑的每台服务器处理能力的不同
如果,我们有两条linux服务器,有一台,配置比较高,那么这台高配置的服务器,应当要负担更多的请求。
示例:
upstream www.xwld.site{ server www.xwld.site:8080 weight=15; server www.xwld.site:9080 weight=10; }
上面的配置表示,访问8080端口的服务器的概率是访问9080端口的1.5倍。
2.3 ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
缺点是,ip_hash不一定平均,可能会造成某一台服务器的压力过大。
示例:
upstream www.xwld.site{ ip_hash; server www.xwld.site:8080; server www.xwld.site:9080; }
2.4 least_conn(最少连接)
least_conn这种负载均衡策略,能把请求转发给连接数较少的后端服务器,适合请求处理时间长短不一造成服务器过载的情况。
有时候会出现这种情况,有些接口请求占用的时间很长,会导致其所在的后端服务负载过高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。
示例:
upstream www.xwld.site{ least_conn; server www.xwld.site:8080; server www.xwld.site:9080; }
2.5 fair(公平)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
fair属于第三方的负载均衡策略的实现,要使用这种策略,需要安装第三方插件。
示例:
upstream www.xwld.site{ server www.xwld.site:8080; server www.xwld.site:9080; fair; }
2.6 url_hash
使用url_hash,可以使得同一个url(也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再此收到请求,就可以从缓存中读取
示例:
upstream www.xwld.site{ server www.xwld.site:8080; server www.xwld.site:9080; hash $request_uri; }