日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁編程開發(fā)其它知識 → IIS綁定域名導(dǎo)致應(yīng)用程序重啟的解決方案

      IIS綁定域名導(dǎo)致應(yīng)用程序重啟的解決方案

      相關(guān)軟件相關(guān)文章發(fā)表評論 來源:西西整理時間:2014/7/4 14:58:40字體大小:A-A+

      作者:西西點擊:46次評論:4次標(biāo)簽: IIS

      • 類型:站長工具大。92KB語言:中文 評分:5.0
      • 標(biāo)簽:
      立即下載

      這個問題比較小眾,卻是不好解決,在將多個站點遷移到一個站點(Tenant Feature)的時候碰到了一個棘手的問題,用戶需要綁定自定義域名,但IIS綁定域名的時候會導(dǎo)致這個站點重啟,那么只要一個用戶綁定了一個域名則會導(dǎo)致這個應(yīng)用上的其它租戶都會受到影響,下面寫出我們的解決方案,但不一定是最優(yōu)的。

      問題在IIS上綁定域名導(dǎo)致應(yīng)用程序重啟

      一個簡單的測試

      1.新建一個空MVC項目,在MvcApplication類中定義一個全局的靜態(tài)變量

      2.創(chuàng)建一個控制器和視圖

      3.在視圖頁對MvcApplication中的Count進行++并輸出

      4.訪問幾次頁面

      5.綁定一個域名

      6.刷新頁面

      至此驗證完成,可以看到應(yīng)用被重啟了。

      為什么綁定域名會導(dǎo)致應(yīng)用程序重啟

      其實原理和更改Web.config文件會導(dǎo)致應(yīng)用重啟啟動是一樣的,因為綁定域名時實際在C:\Windows\System32\inetsrv\config\applicationHost.config文件中增加一了一段配置,如下:

      使用Nginx解決問題

      為了解決這個問題可謂是找了很多資料,最終無奈使用一個代理服務(wù)器來解決這個問題,雖然我覺得在這里Nginx受了委屈,因為它更大的作用是負(fù)載均衡,但能解決問題就行,以后在大訪問量的時候也可以派上用場,下面就簡述下使用Nginx解決這個問題的過程。

      原理其實非常簡單,在用戶訪問一個Url時由Nginx去分配,這樣域名就可以不用直接綁定在IIS上,而由Nginx來分配域名指向哪里。

      提前在IIS上綁定無數(shù)個泛解析域名

      比如:site1.cs.xxx.com~site9999999.cs.xxx.com,這樣就免去了在新增Tenant時需要綁定域名的尷尬。

      將綁定自定義域名的動作交給Nginx

      Nginx沒有提供什么API,只有一個配置文件和幾個命令,所以我們要做的就是將在Nginx上配置域名的動作自動化,我們?yōu)榇藢懥艘粋Daemon Service來完成這個動作,下面會介紹并放出這個守護程序的使用說明及源碼。

      這樣IIS綁定域名的問題就解決了,但其實在這個方案之前我們還有過其他的方案。

      被Pass掉的方案

      1.一臺服務(wù)器只掛一個站點,而這個站點不綁定任何域名,所有指向這個服務(wù)器IP的80端口的請求全部由這個站來響應(yīng)。

      Pass原因:浪費資源,80端口被極大的浪費。

      2.每天定點綁定域名

      Pass原因:用戶綁完域名后生效時間不確定,可能需要等到晚上12點之后才能生效。

      Nginx自動化配置

      Server

      守護服務(wù)的主要原理是這樣的,守護服務(wù)提供一個WCF服務(wù),這個WCF服務(wù)中有兩個操作,綁定域名和刪除域名,服務(wù)約束如下:

      具體實現(xiàn)代碼就不演示了。

      使用說明

      1.配置守護服務(wù)(App.config)

      主要有兩個配置:

      NginxPath:Nginx的存放路徑,因為我要找到配置文件和nginx.exe,你懂的。

      RunModel:因為Nginx只提供了命令行的模式去執(zhí)行,所以我需要借助PowerShell或CMD,注意如果使用PowerShell,則PowerShell的版本必須為3.0及以上。

      2.配置Nginx

      因為Nginx默認(rèn)的配置文件中有很多配置,所以我們單獨把域名的配置獨立出來,這就需要對Nginx原有的配置進行一些修改。

      打開nginx-1.7.2\conf\nginx.conf文件,在http節(jié)點下添加配置 include custom.conf;

      到這里我們的配置就完成了,接下來啟動服務(wù)。

      Client

      1.添加服務(wù)引用

      2.添加如下測試代碼

      運行之后會發(fā)現(xiàn)nginx-1.7.2\conf\下多出了一個custom.conf文件。

      內(nèi)容為:

      到這里我們就測試通過啦,如果想看效果請自行hosts映射test1.com和test2.com到本地IP

      為了防止綁定失敗我們同時在服務(wù)的根目錄下保存了domains.xml文件,域名的綁定信息也會在此保留,這樣大家就可以自己還原啦。

      Daemon Service Source Code

      http://files.cnblogs.com/ants/ChunSun.NginxServer.DaemonService.zip

      說明:該源碼是我精簡過后的,原來的源碼是基于Rabbit Kernel的,所以精簡后的源碼沒有提供日志等功能的支持,大家可以自行添加。

        相關(guān)評論

        閱讀本文后您有什么感想? 已有人給出評價!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評論

        最新評論

        發(fā)表評論 查看所有評論(4)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)