Nginx + IIS 配置,實現負載均衡

當你的Web應用程序訪問量大的時候,一臺服務器可能會由於壓力過大而沒法處理全部的請求。此時,能夠增長服務器,採用負載均衡來分擔全部的請求。關於Nginx的做用,自行百度瞭解。總之,在Windows平臺下,你能夠用它和IIS來實現你的Web應用程序的負載均衡。簡單說,就是它會根據幾臺服務器的空閒程度,將接收到的Web請求分發到相應的服務器進行處理(固然它會選擇比較空閒的服務器來處理當前的請求,不然用它有什麼意義呢)。接下來,採用兩臺虛擬機,建立簡單的ASP.Net應用程序,使用Nginx+IIS實現負載均衡。html

1、環境nginx

Client: Win7 X64, Visual Studio2010, IP:59.78.184.11web

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)瀏覽器

2、建立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端口給新建的站點就能夠了)。app

3、安裝Nginx並進行配置負載均衡

官網上下載一個Nginx,在Server1的C盤中解壓。找到conf文件夾,打開裏面的nginx.conf文件。找到http塊,往下須要配置的地方:tcp

  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的地址。

相關文章
相關標籤/搜索