2017-08-27 25 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
相关问题