2017-08-27 27 views
0

我目前正在研究(僅限個人用途)是否可以編寫一個位於HTTP.sys下的篩選器驅動程序來攔截請求。HTTP.sys是過濾器(下/上)還是功能驅動程序(用於PDO的FDO)?

這個想法是調查是否可以重寫503服務不可用屏幕(因爲顯然,它是不可能覆蓋或改變它)。

問題是我不確定HTTP.sys是如何實現的,無論是位於某個網絡驅動程序下面的篩選器驅動程序,還是某個虛擬設備使用HTTP.sys。

+0

'http.sys'完全不WDM驅動程序。它有遺產。您可以在設備樹中查看http.sys中的['AddDevice'](https://msdn.microsoft.com/en-us/library/windows/hardware/ff540521(v = vs.85).aspx)爲0 - 所以不是wdm – RbMm

回答

0

我認爲它是不可能覆蓋在http 2 api reference http.sys.Looking的503錯誤響應,我們只能覆蓋冗長。 http.sys驅動程序偵聽http請求並將其傳遞給正在偵聽IP:hostname:port組合的服務。

你可以覆蓋503從iis端而不是從http.sys。所以一個簡單的技巧(不是很好)是設置一個ARR + UrlRewrite反向代理,並且只要你的後端服務拋出503,你可以拋出自定義503從前端像this

www.example.com:80 => exampleweb:80 => localhost:8080(實際網站)。

您的實際網站上的8080端口。如果它拋出503,那麼你可以自定義的503 exampleweb

扔但是,這仍然會給503錯誤,如果前端下降,但如果它只是作爲反向代理,那很不可能。正如我所說這不是一個好方法,但可能比編寫過濾器驅動程序更好。

+0

感謝您的意見。實際上,就我而言,我所做的(用於生產)是另一個應用程序池,當我們在我們的網站上計劃維護時,我們會按需切換(因爲503通常由於沒有應用程序池可供響應而發生)。 據我所知,可能有不同的(和更多的管理)處理問題的方式;但目前我只是試驗一下,看看實際實現http.sys的過濾器驅動程序需要什麼 –

0

我相信IIS不允許你覆蓋503(以及其他一些)......但是你可以做的就是在它前面打httpd並使用反編號&重寫模塊來修改響應。

事情是這樣的:

  • 設置IIS聽一些內部端口,恩。 8080,4434 ..無論你需要什麼
  • 在它前面設置httpd來監聽你想要的端口,例如。 80和443
  • 設置反向清除規則以相應地轉發所有請求,例如, 80-> 8080和443-> 4434
  • 設置的RewriteRules修改響應,如果它是一個503
相關問題