windows配置nginx实现负载均衡集群

一、windows上安装nginx

1、下载nginx的windows版本http://nginx.org/en/download.html

2、把压缩文件解压至c盘根目录,并将文件夹重命名成nginx

3、在conf目录下的nginx.conf文件中,指定一个不冲突的端口号,这里测试用8088,代码段如下:

server { 
     listen       8090; 
     server_name  localhost; 
} 
server { 
     listen       8090; 
     server_name  localhost; 
}

4、打开cmd命令行,运行如下命令:start nginx.exe

1. >cd c:\nginx 
2. >nginx

好了,试试吧,打开浏览器,输入127.0.0.1:8090,如果出现下图,那就说明nginx服务器已经成功安装.

二、配置nginx负载均衡

1、打开conf目录下的nginx.conf,具体配置代码如下:

#nginx进程,一般设置为和cpu核数一样
worker_processes  1;

#全局错误日志及PID文件
error_log  logs/error.log;
pid        logs/nginx.pid;

#工作模式及连接数上限
events {
    use   epoll;             #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
    worker_connections  1024;#单个后台worker process进程的最大并发链接数
    # multi_accept on; 
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
    include       mime.types;#文件扩展名与类型映射表
    default_type  application/octet-stream;#默认文件类型
    access_log    logs/access.log; #设定日志格式
    sendfile      on; #开启高效传输模式     
    #连接超时时间 单位是秒
    keepalive_timeout  65;
    tcp_nodelay        on;
    #开启gzip压缩
    gzip  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    #设定请求缓冲
    client_header_buffer_size    1k;
    large_client_header_buffers  4 4k;
    
    #设定负载均衡的服务器列表
    upstream leizi { #weigth参数表示权值,权值越高被分配到的几率越大
        server 10.204.3.223:8090 weight=1 max_fails=2 fail_timeout=30s;#真实服务器A
        server 10.204.3.20:8090 weight=1 max_fails=2 fail_timeout=30s;#真实服务器B #这里是在30s内尝试2次失败即认为主机不可用!
    }
    #基于域名的虚拟主机
    server {#Nginx代理服务器 
        listen       8090;
        server_name  localhost;
        access_log  logs/localhost.access.log  main;#设定本虚拟主机的访问日志
        #默认请求
        location / {
            root   html; #站点根目录,即网站程序存放目录 
            index  index.html index.htm index.php;  #首页排序

            proxy_pass  http://leizi; #请求转向leizi定义的服务器列表
            proxy_redirect  default; 
        }
        # 定义错误提示页面
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        #静态文件,nginx自己处理
        location ~ ^/(images|javascript|js|css|flash|media|static)/ {
            root html;
            #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
            expires 30d;
        }
        #location 标签,根目录下的.svn目录禁止访问
        location ~ /.svn/ {
         deny all;
        }
        #设定查看Nginx状态的地址
        location /NginxStatus {
            stub_status            on;
            access_log              on;
            auth_basic              "NginxStatus";
            auth_basic_user_file  conf/htpasswd;
        }
    }
}
#nginx进程,一般设置为和cpu核数一样
worker_processes  1;

#全局错误日志及PID文件
error_log  logs/error.log;
pid        logs/nginx.pid;

#工作模式及连接数上限
events {
    use   epoll;             #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
    worker_connections  1024;#单个后台worker process进程的最大并发链接数
    # multi_accept on; 
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
    include       mime.types;#文件扩展名与类型映射表
    default_type  application/octet-stream;#默认文件类型
    access_log    logs/access.log; #设定日志格式
    sendfile      on; #开启高效传输模式     
    #连接超时时间 单位是秒
    keepalive_timeout  65;
    tcp_nodelay        on;
    #开启gzip压缩
    gzip  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    #设定请求缓冲
    client_header_buffer_size    1k;
    large_client_header_buffers  4 4k;
    
    #设定负载均衡的服务器列表
    upstream leizi { #weigth参数表示权值,权值越高被分配到的几率越大
        server 10.204.3.223:8090 weight=1 max_fails=2 fail_timeout=30s;#真实服务器A
        server 10.204.3.20:8090 weight=1 max_fails=2 fail_timeout=30s;#真实服务器B #这里是在30s内尝试2次失败即认为主机不可用!
    }
    #基于域名的虚拟主机
    server {#Nginx代理服务器 
        listen       8090;
        server_name  localhost;
        access_log  logs/localhost.access.log  main;#设定本虚拟主机的访问日志
        #默认请求
        location / {
            root   html; #站点根目录,即网站程序存放目录 
            index  index.html index.htm index.php;  #首页排序

            proxy_pass  http://leizi; #请求转向leizi定义的服务器列表
            proxy_redirect  default; 
        }
        # 定义错误提示页面
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        #静态文件,nginx自己处理
        location ~ ^/(images|javascript|js|css|flash|media|static)/ {
            root html;
            #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
            expires 30d;
        }
        #location 标签,根目录下的.svn目录禁止访问
        location ~ /.svn/ {
         deny all;
        }
        #设定查看Nginx状态的地址
        location /NginxStatus {
            stub_status            on;
            access_log              on;
            auth_basic              "NginxStatus";
            auth_basic_user_file  conf/htpasswd;
        }
    }
}

2、重启一下nginx吧,你可以在任务管理器中将原来的两个nginx进程结束然后按前面安装时的方法启动nginx,也可以直接输入命令:nginx -s reload来重启

三、部署网站

1、准备两个完全一样的ASP.NET测试网站程序,

2、分别放在leizi服务器列表的IIS中,输入对应的ip地址试一下是否可用访问。

3、访问代理服务器 127.0.0.1:8090 访问结果是每刷新一次就在leizi列表之间切换。

四、总结:

访问代理服务器 127.0.0.1:8090 访问结果是每刷新一次就在leizi列表之间切换 这样就起到了简单的轮询访问的效果,一定程度上起到了负载分流的作用至此,windows配置nginx实现负载均衡集群已经完成。