diff --git a/README.md b/README.md index b4629c8..bb2f752 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ * 即时运用与P2P * Node.js性能优化 * 集群与负载均衡 + * [nginx的实现](/集群与负载均衡/nginx的实现.md) * 数据库相关 * 性能测试 diff --git a/assets/nginx-request.png b/assets/nginx-request.png new file mode 100644 index 0000000..c7465cf Binary files /dev/null and b/assets/nginx-request.png differ diff --git "a/\351\233\206\347\276\244\344\270\216\350\264\237\350\275\275\345\235\207\350\241\241/nginx\347\232\204\345\256\236\347\216\260.md" "b/\351\233\206\347\276\244\344\270\216\350\264\237\350\275\275\345\235\207\350\241\241/nginx\347\232\204\345\256\236\347\216\260.md" new file mode 100644 index 0000000..dec7ff5 --- /dev/null +++ "b/\351\233\206\347\276\244\344\270\216\350\264\237\350\275\275\345\235\207\350\241\241/nginx\347\232\204\345\256\236\347\216\260.md" @@ -0,0 +1,38 @@ +# nginx实现负载均衡 + +Nginx 的负载均衡功能,其实实际上和 nginx 的代理是同一个功能,只是把代理一台机器改为多台机器而已。 + +## 配置文件 + +``` +upstream backend { + server 192.168.0.18; + server 192.168.0.28; + server 192.168.0.38; +} + +server { + listen 80; + server_name 192.168.0.08; + location / { + proxy_pass http://backend; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } +} +``` + +通过上述配置,Nginx会作为HTTP反向代理,把访问本机的HTTP请求,均分到后端集群的3台服务器Server1、Server2、Server3。 + +![](/assets/nginx-request.png) + +nginx的upstream目前支持4种方式的分配 + +* 轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 + +* weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 + +* iphash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 + +* fair 按后端服务器的响应时间来分配请求,响应时间短的优先分配。 \ No newline at end of file