zoukankan      html  css  js  c++  java
  • Nginx + IIS 配置,实现负载均衡

    当你的Web应用程序访问量大的时候,一台服务器可能会因为压力过大而无法处理所有的请求。此时,可以增加服务器,采用负载均衡来分担所有的请求。关于Nginx的作用,自行百度了解。总之,在Windows平台下,你可以用它和IIS来实现你的Web应用程序的负载均衡。简单说,就是它会根据几台服务器的空闲程度,将接收到的Web请求分发到相应的服务器进行处理(当然它会选择比较空闲的服务器来处理当前的请求,否则用它有什么意义呢)。接下来,采用两台虚拟机,创建简单的ASP.Net应用程序,使用Nginx+IIS实现负载均衡。

    一、环境

    Client: Win7 X64, Visual Studio2010, IP:59.78.184.11

    Server1: 虚拟机Win7 X64, IIS,Nginx IP:59.78.184.151 开放端口80(Nginx)、8080(IISweb)

    Server2:虚拟机Win7 X64, IIS, IP:59.78.184.136 开放端口80(IISWeb)

    二、创建ASP.Net应用程序,并发布至两台Server上

    VS中创建ASP.Net应用程序,为了测试负载均衡效果,我们只在应用程序中获取当前处理Web请求的Server名。在项目中的Default.aspx.cs文件中写如下代码,Default.aspx页面中放置一个Label控件。

      protected void Page_Load(object sender, EventArgs e)
            {
               HostNameLbl.Text = "UserHostName:" + Request.UserHostName.ToString() + "<br/>UserHostAddress:" + Request.UserHostAddress.ToString()
                    + "<br/>Url.Host:" + Request.Url.Host.ToString() + "<br/>Server:" + Server.MachineName.ToString(); ;
            }

    接着,生成项目,将项目发布至已经准备好的两台Server中。在Server1的IIS上,创建站点,将路径指向该项目,并将8080端口分配给该站点。(注意,默认站点的端口为80,因为Server1一会需要将80端口给Nginx,所以我们重新给站点一个端口)。防火墙上将8080端口打开。同样的步骤,在Server2上再走一遍(Server2上直接将80端口给新建的站点就可以了)。

    三、安装Nginx并进行配置

    官网上下载一个Nginx,在Server1的C盘中解压。找到conf文件夹,打开里面的nginx.conf文件。找到http块,往下需要配置的地方:

    1. upstream localhost块,将需要监听的两台服务器IP地址配上去
    2. server块。Nginx监听本地端口配置上
    3. location块。
    http {
        include       mime.types;
        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"';
    
        #access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    
       upstream localhost{
        server 59.78.184.151:8080;
        server 59.78.184.136:80;
        }
    
        server {
            listen       80;
            server_name  59.78.184.151;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            #location / {
            #    root   html;
            #    index  index.html index.htm;
            #}
        #my own location
        location / {
            proxy_pass http://localhost;
            proxy_redirect default;
        }

    接着启动nginx。

    启动:打开cmd,进入Nginx目录,输入nginx.exe回车。此时查看任务管理器中,有两个nginx进程即启动成功。

    关闭:打开cmd,进入Nginx目录,输入nginx.exe –s stop回车,即可关闭nginx。如果在此你修改了配置文件,导致nginx无法关闭。cmd上会提示配置文件的哪一行出错,可以追踪到该行去进行相应的修改。

    在浏览器中访问我们的应用程序。注意观察Server的值是WIN-KKRTSU3Q756

     刷新浏览器,再次查看结果,如下:此时的Server编程了WIN-VM3BU2IPGM4。然而对于用户来说,我并没有察觉到,访问的依旧是Server1的地址。

  • 相关阅读:
    C# 从类库中获取资源图片,把图片资源保存到类库中
    C# Bitmap/png转成jpg格式,压缩图片
    C# 窗体间传值(使用委托与自定义事件)
    C# Image与Base64编码互转函数
    简单Tomcat HTTP RPC框架
    Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
    Java序列化机制和原理
    攻破JAVA NIO技术壁垒
    代理模式(Proxy)
    Java序列化与反序列化
  • 原文地址:https://www.cnblogs.com/gxwang/p/4935411.html
Copyright © 2011-2022 走看看