码迷,mamicode.com
首页 > Windows程序 > 详细

Windows下使用Nginx实现负载均衡

时间:2016-05-05 12:39:44      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:

      Nginx (”engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。

      Nginx负载均衡有哪些功能呢?

      如果后面的服务器其中一台坏了,它能自动识别,更牛的是它好了之后Nginx可以马上识别服务器A和B,如果A的响应时间为3,B的响应时间为1,那么Nginx会自动调整访问B的概率是A的3倍,真正做到Nginx负载均衡。

  在这里举例说一下Nginx如何实现的负载均衡:
1、现有2台同一个Web程序的服务器,访问的地址分别是:
S1:192.168.42.226:9091
S2:192.168.42.227:9091
2、这里把Nginx放在另外一台服务器C起到第三方仲裁的作用,服务器C的IP为192.168.42.229
3、下载Nginx, http://nginx.org/en/download.html 解压到E:\nginx目录下。
4、找到目录E:\nginx\conf\nginx.conf打开nginx.conf配置如下:

#指定工作衍生进程数(一般等于CPU总和数或总和数的两倍,例如两个四核CPU,则总和数为8)
#指定错误日志文件存放路径,错误日志级别可选项为【debug|info|notice|warn|error|crit】
#error_log logs/error.log notice;
#指定pid存放路径
#pid logs/nginx.pid;

#use epoll;
}

default_type application/octet-stream;
#设定日志格式
#log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘
# ‘$status $body_bytes_sent "$http_referer" ‘
# ‘"$http_user_agent" "$http_x_forwarded_for"‘;

log_format main $remote_addr - $remote_user [$time_local]
log_format download $remote_addr - $remote_user [$time_local]
"$request" $status $bytes_sent
"$http_referer" "$http_user_agent"
"$http_range" "$sent_http_content_range";

large_client_header_buffers 4 4k;

client_header_timeout 3m;
send_timeout 3m;

tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;

gzip_min_length 1100;
gzip_types text/plain application/x-javascript text/css application/xml;

postpone_output 1460;

client_max_body_size 8m;

fastcgi_send_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_busy_buffers_size 128k;
gzip_http_version 1.1;
gzip_vary on;

#同一机器在多网情况下,路由切换,ip可能不同
#server localhost:9080 weight=1;
server 192.168.42.227:9091 max_fails=2 fail_timeout=600s;
server_name 192.168.42.229;

charset UTF-8;
#假如访问 /img/*, /js/*, /css/* 资源,则直接取本地文档,不通过squid
# expires 24h;
index index.html index.htm index.aspx;

#保留用户真实信息
proxy_set_header X-Real-IP $remote_addr;
#允许客户端请求的最大单个文件字节数
#缓冲区代理缓冲用户端请求的最大字节数,可以理解为先保存到本地再传给用户
#跟后端服务器连接超时时间 发起握手等候响应超时时间
#连接成功后 等待后端服务器响应时间 其实已进入后端的排队之中等候处理
#后端服务器数据回传时间 就是在规定时间内后端服务器必须传完所有数据
#代理请求缓存区 这个缓存区间会保存用户的头信息一共Nginx进行规则处理 一般只要能保存下头信息即可
#同上 告诉Nginx保存单个用的几个Buffer最大用多大空间
#如果系统很忙的时候可以申请国内各大的proxy_buffers 官方推荐 *2
#proxy 缓存临时文件的大小
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 128m;
}
#error_page 404 /404.html;

location = /50x.html {
}

#}

# fastcgi_pass 127.0.0.1:9000;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
#}
#}
}
}

        PS:设定虚拟机是配置第三方服务器的IP和所需要对外提供负载访问的端口。
5、双击E:\nginx\nginx.exe文件,启动nginx。
6、打开浏览器访问Web程序,输入地址:192.168.42.229:9091进行访问。
    测试是否实现负载均衡:关闭S1上的服务刷新浏览器看是否能够继续访问,打开S1上的服务关闭S2上的服务刷新浏览器看是否能够继续访问,若都能访问到则证明负载均衡已经正确配置。
7、核心代码有2个第一个是upstream localhost {}里面的配置,第二个是location / {}里面的配置,在以上nginx.conf文件的配置代码中。

Windows下使用Nginx实现负载均衡

标签:

原文地址:http://www.cnblogs.com/zoufan/p/5461246.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!