中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nginx和IIS的簡單的部署方法

發布時間:2021-08-18 17:48:43 來源:億速云 閱讀:1071 作者:chen 欄目:服務器

本篇內容介紹了“Nginx和IIS的簡單的部署方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

Nginx簡介:

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

nginx安裝

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

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

Nginx和IIS的簡單的部署方法Nginx和IIS的簡單的部署方法

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

Nginx和IIS的簡單的部署方法

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

Nginx和IIS的簡單的部署方法

站點搭建及配置

1.搭建兩個iis站點

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

protected void Page_Load(object sender, EventArgs e)
  {
   Label0.Text = "請求開始時間:"+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
   Label1.Text = "服務器名稱:" + Server.MachineName;//服務器名稱 
   Label2.Text = "服務器IP地址:" + Request.ServerVariables["LOCAL_ADDR"];//服務器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 = "服務器操作系統版本:" + Environment.OSVersion.ToString();//服務器操作系統版本 
   Label6.Text = "服務器IIS版本:" + Request.ServerVariables["SERVER_SOFTWARE"];//服務器IIS版本 
   Label7.Text = "服務器域名:" + Request.ServerVariables["SERVER_NAME"];//服務器域名 
   Label8.Text = "虛擬目錄的絕對路徑:" + Request.ServerVariables["APPL_RHYSICAL_PATH"];//虛擬目錄的絕對路徑 
   Label9.Text = "執行文件的絕對路徑:" + Request.ServerVariables["PATH_TRANSLATED"];//執行文件的絕對路徑 
   Label10.Text = "虛擬目錄Session總數:" + Session.Contents.Count.ToString();//虛擬目錄Session總數 
   Label11.Text = "虛擬目錄Application總數:" + Application.Contents.Count.ToString();//虛擬目錄Application總數 
   Label12.Text = "域名主機:" + Request.ServerVariables["HTTP_HOST"];//域名主機 
   Label13.Text = "服務器區域語言:" + Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"];//服務器區域語言 
   Label14.Text = "用戶信息:" + Request.ServerVariables["HTTP_USER_AGENT"];
   Label14.Text = "CPU個數:" + Environment.GetEnvironmentVariable("NUMBER_OF_PROCESSORS");//CPU個數 
   Label15.Text = "CPU類型:" + Environment.GetEnvironmentVariable("PROCESSOR_IDENTIFIER");//CPU類型 
   Label16.Text = "請求來源地址:" + Request.Headers["X-Real-IP"];
  }

2.修改nginx配置信息

修改nginx監聽端口,修改http server下的listen節點值,由于本機80端口已經被占用,我改為監聽8083端口。

listen 8083;

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

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

在http節點下找到location節點修改

location / {
root html;
index index.aspx index.html index.htm; #修改主頁為index.aspx
#其中jq_one對應著upstream設置的集群名稱
proxy_pass http://Jq_one;
#設置主機頭和客戶端真實地址,以便服務器獲取客戶端真實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服務,最終完整配置文件信息如下

Nginx和IIS的簡單的部署方法

3.運行結果

訪問http://127.0.0.1:8083/index.aspx ,多訪問幾次,著重關注標紅部分。

Nginx和IIS的簡單的部署方法Nginx和IIS的簡單的部署方法

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

問題分析

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

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

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

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

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

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

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

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

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

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

這里講一下,負載均衡有好幾種算法 輪轉法,散列法,最少連接法,最低缺失法,最快響應法,加權法。我們這里可以使用加權法來分配請求。

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

通過weight設置每臺服務器分配請求站的權重,值越高分配的越多。

5.由于請求是經過nginx轉發過來的,可以在代碼里面獲取到用戶請求的實際ip地址嗎?

答案是肯定的,在localtion節點設置如下請求頭信息

#設置主機頭和客戶端真實地址,以便服務器獲取客戶端真實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的簡單的部署方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

察雅县| 汉沽区| 姜堰市| 滨州市| 乐山市| 连平县| 河南省| 安泽县| 镇坪县| 莒南县| 英吉沙县| 商南县| 蒙城县| 关岭| 崇义县| 辽宁省| 鹤壁市| 乌恰县| 洪洞县| 苍南县| 河池市| 平安县| 大同县| 鄂伦春自治旗| 华宁县| 丰原市| 东丰县| 伊金霍洛旗| 卫辉市| 西乌珠穆沁旗| 怀化市| 濮阳市| 开鲁县| 凯里市| 诸城市| 长岛县| 昌黎县| 雅江县| 巴林左旗| 安塞县| 四子王旗|