ITPub博客

首页 > Linux操作系统 > Linux操作系统 > window环境下nginx配置

window环境下nginx配置

原创 Linux操作系统 作者:taogchan 时间:2013-06-25 16:05:16 0 删除 编辑

window环境下nginx配置

原来一直以为nginx只能在Linux下搭建,最近查了些资料才恍然大悟,Windows下其实也可以跑nginx。当你的网站访问量越来越高的时候,一台服务器已经没有办法承受流量压力,后果可想而知,怎么办呢?那就增几台 服务器来做负载吧。但当下的硬件设施又是贵得离谱,比如F5,所以这种情况下,免费的nginx成了我们不错的选择,nginx目前好多门户网站与大访问量的网站都在使用做为HTTP服务器,所以nginx是相当优秀的……

实验环境:(2台服务器)
第一台:
  系统:Win2003
  nginx:nginx/Windows-0.8.32
  IP:192.168.0.51
  环境:本地
第二台:
  系统:Win2003
  IP:192.168.0.52
  环境:远程

说明:
 本次测试,软件nginx放在本地(192.168.0.51),也就是说放在域名绑定的那台服务器,这台服务器的IIS不能使用80端口,因为等下nginx软件要使用80这个端口。(为了方便,我将本机的hosts文件添加了我要测试的域名   192.168.0.51    www.g.cn) 
下载nginx的地址如下:
nginx下载:http://nginx.net/

下载解压到C:\,把目录名改成nginx

一切准备就绪,开始实验

No.1

        在本地(192.168.0.51)这台服务器IIS创建一个网站,使用端口为808,如下图:

高级网站标识
此网站的多个标识(M)
IP地址 TCP端口 主机头值
192.168.0.51 808 www.g.cn

IIS 网站绑定设置图

No.2

      在远程192.168.0.52的IIS创建一个网站,使用端口为80,如下图:

高级网站标识
此网站的多个标识(M)
IP地址 TCP端口 主机头值
192.168.0.52 80

No.3

好了,以上已经设置好两台服务器的IIS了,下面配置nginx软件来实现网站负载均衡,打开如下文件:

C:\nginx\conf\nginx.conf

1、找到内容server {

它的上面加入如下内容:

upstream  www.g.cn {  
   server   192.168.0.51:808;
   server   192.168.0.52:80;
    }

(这是负载切换使用的服务器网站IP)

2、找到location / {
            root   html;
            index  index.html index.htm;
        }

把内容更改如下:

location / {
            proxy_pass http://www.g.cn;
            proxy_redirect default;
        }

3、找到server {
        listen       80;
        server_name  localhost;

把内容改成如下:

server {
        listen       80;
        server_name  192.168.0.51;

(这是监听访问域名绑定那台服务器80端口的请求)

好,在这里就这么简单配置好了,下面看下以上3步配置的图:

负载配置图

No.4

      都配置好了,下面启动nginx这软件

      进入命令提示符CMD,进入c:\nginx>,输入nginx命令,如下图:

启动nginx

这时候,系统进程有两个nginx.exe进程,如下图:

系统nginx进程

停止nginx运行输入nginx -s stop 即可

No.5

       经过以上的配置,现在我们看下负载效果:

       在本地(192.168.0.51)这服务器打开IE,输入:http://192.168.0.51

       第一次打开网站的结果:

      

第一次访问网站图

        

刷新一下网页,出现的结果:

再次访问网站图

OK测试成功o(∩_∩)o 

经过这次测试,可见网站的负载平衡并不是难事。也没有必要另外购买硬件设备补充一点,nginx软件在linux上跑性能比在windows上跑要好,所以做负载可以用linux跑nginx,.net开发的网站放到windows服务器IIS上。

如果网站访问量非常大,可以专门用一台服务器跑nginx,其它服务器跑网站程序(几台服务器的程序都是一样的),这样负载就没有太大问题,如果再不行,把网站一些栏目做一个2级域名,2级域名同样做负载,这样就ok了。

nginx负载均衡基于iphashsession黏贴

web server 2010-10-17 18:07:43 阅读30 评论0   字号:大中小 订阅

nginx可以根据客户端IP进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个。
nginxupstream目前支持的5种方式的分配

1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}

2weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}

3ip_hash
每个请求按访问iphash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}

4fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream backserver {
server server1;
server server2;
fair;
}

5url_hash(第三方)
按访问urlhash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}

在需要使用负载均衡的server中增加

proxy_pass http://backserver/;
upstream backserver{

ip_hash;
server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载)
server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大)
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器)
}

max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
 
fail_timeout:max_fails次失败后,暂停的时间

一般做负载均衡,都需要后端多台web服务器之间实现session共享,否则用户登录可能就有问题了。

今天看nginx文档时候,发现nginx可以根据客户端IP进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个。

原文如下:
The key for the hash is the class-C network address of the client. This method guarantees that the client request will always be forwarded to the same server. But if this server is considered inoperative, then the request of this client will be transferred to another server. This gives a high probability clients will always connect to the same server.

也 就是说我可以在两台服务器上跑两个论坛,但共享一个后台数据库,而不用去关心session共享的问题,前面启用ip_hash,正常情况下,客户端上网 获得IP,登录浏览发帖等都会被转到固定的后端服务器上,这样就不会出问题了。应该说来访IP分布越广,负载均衡就越平均。嘿嘿,如果都是同一个C来的用 户,那就没用了。

虚拟机上搭了个环境测试了一下:

装了三个nginx,分别在808182端口上。

80端口上的nginx做负载均衡前端,配置到后面两个nginx

upstream test{
            ip_hash;
            server 127.0.0.1:81 ;
            server 127.0.0.1:82 ;
        }

81端口的nginx上写个简单的html,内容为1;在82端口的nginx上写个内容为2html,两个文件同名。

在有ip_hash的时候,刷新页面http://192.168.1.33/index.html,始终显示为1,没有ip_hash的时候,则为轮流的12

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22392018/viewspace-764783/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-08-28

  • 博文量
    200
  • 访问量
    1188376