欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nginx+IIS簡單的部署教程

 更新時間:2017年07月12日 09:09:16   作者:Jbp  
這篇文章主要為大家詳細(xì)介紹了Nginx+IIS簡單的部署教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下

隨著互聯(lián)網(wǎng)項目用戶訪問量不斷上升,單點web服務(wù)器是無法滿足大型高并發(fā)高負(fù)載的業(yè)務(wù)處理的,為了給web服務(wù)器做負(fù)載均衡方案,打算采用Nginx搭建負(fù)載均衡服務(wù)器,把用戶請求分配到N個服務(wù)器來緩解服務(wù)器壓力。

Nginx簡介:

Nginx (“engine x”) 是一個高性能的 HTTP 和 反向代理 服務(wù)器,也是一個 IMAP/POP3/SMTP 代理服務(wù)器 。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的Rambler.ru 站點開發(fā)的,它已經(jīng)在該站點運行超過四年多了。Igor 將源代碼以類BSD許可證的形式發(fā)布。自Nginx 發(fā)布四年來,Nginx 已經(jīng)因為它的穩(wěn)定性、豐富的功能集、 示例配置文件和低系統(tǒng)資源的消耗而聞名了。目前國內(nèi)各大門戶網(wǎng)站已經(jīng)部署了Nginx,如新浪、網(wǎng)易、騰訊等;國內(nèi)幾個重要的視頻分享網(wǎng)站也部署了Nginx,如六房間、酷6等。 新近發(fā)現(xiàn)Nginx 技術(shù)在國內(nèi)日趨火熱,越來越多的網(wǎng)站開始部署Nginx。這邊都是網(wǎng)上說的。

nginx安裝

Nginx是一款輕量級的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,并在一個BSD-like 協(xié)議下發(fā)行。由俄羅斯的程序設(shè)計師Igor Sysoev所開發(fā),供俄國大型的入口網(wǎng)站及搜索引擎Rambler(俄文:Рамблер)使用。其特點是占有內(nèi)存少,并發(fā)能力強,事實上nginx的并發(fā)能力確實在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好,中國大陸使用nginx網(wǎng)站用戶有:百度、新浪、網(wǎng)易、騰訊等。

最新版本的nginx版本為1.9.3,我這下載的是window版本的,一般實際場景都是安裝在linux系統(tǒng)下的,由于linux系統(tǒng)目前正在摸索中這里就不介紹。官方下載地址:nginx-1.9.3.zip。下載完成之后解壓運行nginx.exe就啟動了nginx了,啟動后會在進(jìn)程里面看到nginx。

要實現(xiàn)負(fù)載均衡需要修改conf/nginx.conf的配置信息,修改配置信息之后重新啟動nginx服務(wù),可以通過nginx -s reload指令實現(xiàn)。這里我們使用Ants提供的一個批處理來操作。

將nginx.bat文件放到nginx.exe相同文件夾下,直接運行就行了。文章結(jié)尾會提供本文用到的所有文件。

站點搭建及配置

1.搭建兩個iis站點

站點下只有一個簡單的index頁面,用來輸出當(dāng)前服務(wù)器信息。由于我沒有兩臺機(jī)器,所以將兩個站點都部署到本機(jī)了,分別綁定了8082和9000兩個端口。

protected void Page_Load(object sender, EventArgs e)
  {
   Label0.Text = "請求開始時間:"+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
   Label1.Text = "服務(wù)器名稱:" + Server.MachineName;//服務(wù)器名稱 
   Label2.Text = "服務(wù)器IP地址:" + Request.ServerVariables["LOCAL_ADDR"];//服務(wù)器IP地址 
   Label3.Text = "HTTP訪問端口:" + Request.ServerVariables["SERVER_PORT"];//HTTP訪問端口"
   Label4.Text = ".NET解釋引擎版本:" + ".NET CLR" + Environment.Version.Major + "." + Environment.Version.Minor + "." + Environment.Version.Build + "." + Environment.Version.Revision;//.NET解釋引擎版本 
   Label5.Text = "服務(wù)器操作系統(tǒng)版本:" + Environment.OSVersion.ToString();//服務(wù)器操作系統(tǒng)版本 
   Label6.Text = "服務(wù)器IIS版本:" + Request.ServerVariables["SERVER_SOFTWARE"];//服務(wù)器IIS版本 
   Label7.Text = "服務(wù)器域名:" + Request.ServerVariables["SERVER_NAME"];//服務(wù)器域名 
   Label8.Text = "虛擬目錄的絕對路徑:" + Request.ServerVariables["APPL_RHYSICAL_PATH"];//虛擬目錄的絕對路徑 
   Label9.Text = "執(zhí)行文件的絕對路徑:" + Request.ServerVariables["PATH_TRANSLATED"];//執(zhí)行文件的絕對路徑 
   Label10.Text = "虛擬目錄Session總數(shù):" + Session.Contents.Count.ToString();//虛擬目錄Session總數(shù) 
   Label11.Text = "虛擬目錄Application總數(shù):" + Application.Contents.Count.ToString();//虛擬目錄Application總數(shù) 
   Label12.Text = "域名主機(jī):" + Request.ServerVariables["HTTP_HOST"];//域名主機(jī) 
   Label13.Text = "服務(wù)器區(qū)域語言:" + Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"];//服務(wù)器區(qū)域語言 
   Label14.Text = "用戶信息:" + Request.ServerVariables["HTTP_USER_AGENT"];
   Label14.Text = "CPU個數(shù):" + Environment.GetEnvironmentVariable("NUMBER_OF_PROCESSORS");//CPU個數(shù) 
   Label15.Text = "CPU類型:" + Environment.GetEnvironmentVariable("PROCESSOR_IDENTIFIER");//CPU類型 
   Label16.Text = "請求來源地址:" + Request.Headers["X-Real-IP"];
  }

2.修改nginx配置信息

修改nginx監(jiān)聽端口,修改http server下的listen節(jié)點值,由于本機(jī)80端口已經(jīng)被占用,我改為監(jiān)聽8083端口。

listen 8083;

在http節(jié)點下添加upstream(服務(wù)器集群),server設(shè)置的是集群服務(wù)器的信息,我這里搭建了兩個站點,配置了兩條信息。

#服務(wù)器集群名稱為Jq_one
upstream Jq_one {
  server 127.0.0.1:9000;
  server 127.0.0.1:8082;
}

在http節(jié)點下找到location節(jié)點修改

location / {
root html;
index index.aspx index.html index.htm; #修改主頁為index.aspx
#其中jq_one對應(yīng)著upstream設(shè)置的集群名稱
proxy_pass http://Jq_one;
#設(shè)置主機(jī)頭和客戶端真實地址,以便服務(wù)器獲取客戶端真實IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

修改完成配置文件以后記得重啟nginx服務(wù),最終完整配置文件信息如下

3.運行結(jié)果

訪問http://127.0.0.1:8083/index.aspx ,多訪問幾次,著重關(guān)注標(biāo)紅部分。

可以看到,我們的請求被分發(fā)到了8082站點和9000站點,并且第一次是8082站點第二次9000。出現(xiàn)這樣的結(jié)果證明我們負(fù)載均衡搭建成功了。嘗試關(guān)閉其中的9000站點,然后刷新頁面發(fā)現(xiàn)輸出的http端口一直是8082,也就是說其中一個站點掛了,只要還有一個站點是好的,我們的還是可以服務(wù)。

問題分析

雖然我們搭建好了負(fù)載均衡站點,但是還存在以下問題。

1.如果站點使用了session,請求平均分配到兩個站點,那么必然存在session共享問題,該如何解決?

使用數(shù)據(jù)庫保存session信息使用nginx將同一ip的請求分配到固定服務(wù)器,修改如下。ip_hash會計算ip對應(yīng)hash值,然后分配到固定服務(wù)器

upstream Jq_one{
  server 127.0.0.1:8082 ;
   server 127.0.0.1:9000 ;
  ip_hash;
  }

搭建一臺Redis服務(wù)器,對session的讀取都從該Redis服務(wù)器上讀取。后面的文章將介紹分布式緩存Redis的使用

2.管理員更新站點文件,該怎么操作,現(xiàn)在還只有兩臺服務(wù)器,可以手工將文件更新到兩臺服務(wù)器,如果是10臺呢,那么手工操作必然是不可行的

多服務(wù)器站點更新可以使用GoodSync 文件同步程序,會自動檢測文件的修改新增,然后同步到其它服務(wù)器上。在linux下可以使用rsync

3.站點中的文件上傳功能會將文件分配到不同的服務(wù)器,文件共享問題如何解決。

使用文件服務(wù)器將所有文件存儲到該服務(wù)器上,文件操作讀取寫入都在該服務(wù)器上。這里同樣會存在一個問題,文件服務(wù)器存在讀寫上限。

4.負(fù)載的服務(wù)器配置不一樣,有的高有的低可不可以讓配置高的服務(wù)器處理請求多一些

這里講一下,負(fù)載均衡有好幾種算法 輪轉(zhuǎn)法,散列法,最少連接法,最低缺失法,最快響應(yīng)法,加權(quán)法。我們這里可以使用加權(quán)法來分配請求。

upstream Jq_one{
  server 127.0.0.1:8082 weight=4;
   server 127.0.0.1:9000 weight=1;
  }

通過weight設(shè)置每臺服務(wù)器分配請求站的權(quán)重,值越高分配的越多。

5.由于請求是經(jīng)過nginx轉(zhuǎn)發(fā)過來的,可以在代碼里面獲取到用戶請求的實際ip地址嗎?

答案是肯定的,在localtion節(jié)點設(shè)置如下請求頭信息

#設(shè)置主機(jī)頭和客戶端真實地址,以便服務(wù)器獲取客戶端真實IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

代碼里面通過Request.Headers["X-Real-IP"],就能獲取到真實ip

以上代碼來自:nginx+iis實現(xiàn)簡單的負(fù)載均衡

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Nginx中break與last的區(qū)別詳析

    Nginx中break與last的區(qū)別詳析

    這篇文章主要給大家介紹了關(guān)于Nginx中break與last區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • win2003下nginx 0.8.38 安裝配置備忘

    win2003下nginx 0.8.38 安裝配置備忘

    經(jīng)不住蠱惑,決定在 Windows Server 2003 下安裝試用一下,并與 PHP 進(jìn)行集成。
    2010-12-12
  • ubuntu上配置Nginx+PHP5 FastCGI服務(wù)器配置

    ubuntu上配置Nginx+PHP5 FastCGI服務(wù)器配置

    ubuntu上配置Nginx+PHP5 FastCGI服務(wù)器配置方法, 需要的朋友可以參考下。
    2010-06-06
  • 關(guān)于nginx報錯405?not?allowed解決方法總結(jié)

    關(guān)于nginx報錯405?not?allowed解決方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于nginx報錯405?not?allowed解決方法的相關(guān)資料,nginx遇到post請求靜態(tài)文件會得到405錯誤,文中通過代碼介紹的非常詳細(xì),也給出了推薦方法,需要的朋友可以參考下
    2023-10-10
  • 前端異常502?bad?gateway的原因和解決辦法

    前端異常502?bad?gateway的原因和解決辦法

    本文詳細(xì)講解了前端異常502?bad?gateway的原因和解決辦法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2021-12-12
  • 深入解析nginx路由location匹配規(guī)則及其優(yōu)先級

    深入解析nginx路由location匹配規(guī)則及其優(yōu)先級

    Nginx是一款高性能的Web服務(wù)器和反向代理服務(wù)器,它的路由功能是通過location指令來實現(xiàn)的,location指令用于匹配請求的URL,并將請求轉(zhuǎn)發(fā)到相應(yīng)的處理程序或靜態(tài)文件,需要的朋友可以參考下
    2023-10-10
  • nginx虛擬主機(jī)防webshell完美版

    nginx虛擬主機(jī)防webshell完美版

    nginx虛擬主機(jī)防webshell完美版,使用nginx的朋友可以參考下。
    2010-11-11
  • nginx使用ssl模塊配置支持HTTPS訪問的方法

    nginx使用ssl模塊配置支持HTTPS訪問的方法

    這篇文章主要介紹了nginx使用ssl模塊配置支持HTTPS訪問的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Nginx?504?Gateway?Time-out的兩種最新解決方案

    Nginx?504?Gateway?Time-out的兩種最新解決方案

    大家在訪問網(wǎng)站的時候通常會遇到502錯誤、404錯誤等,很少會遇到504錯誤,但是在我們?nèi)ピL問大流量或者內(nèi)容數(shù)據(jù)量較多的網(wǎng)站時,打開網(wǎng)頁偶爾就會出現(xiàn)504 gateway time-out,這篇文章主要給大家介紹了關(guān)于Nginx?504?Gateway?Time-out的兩種解決方案,需要的朋友可以參考下
    2022-08-08
  • 教你如何使用 Nginx 進(jìn)行負(fù)載均衡

    教你如何使用 Nginx 進(jìn)行負(fù)載均衡

    Nginx 是一個高性能的 HTTP 和反向代理服務(wù)器,它也經(jīng)常被用作郵件代理服務(wù)器和通用 TCP/UDP 代理服務(wù)器,本文我們將詳細(xì)介紹如何使用 Nginx 進(jìn)行負(fù)載均衡,感興趣的朋友跟隨小編一起看看吧
    2024-05-05

最新評論