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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM