标签:
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文件的配置代码中。
标签:
原文地址:http://www.cnblogs.com/zoufan/p/5461246.html