IIS 7.5为未知主机名返回404

这对我来说似乎不正确,所以我正在找人告诉我我是如何配置错误的IIS …配置是IIS7.5(2008R2),没有SP1.

我有IIS 7.5配置了几个站点.所有站点都在绑定中定义了主机名,没有站点没有主机名.但是,如果我从服务器IIS(技术上是Microsoft-HTTPAPI / 2.0)请求未知的主机名,则返回404错误,而不是400错误.我期望400(或其他一些主要错误),而不是低404.

当我在多个IIS前面有Nginx并想要停止一个站点以便Nginx将其从旋转中取出时,这会导致问题.由于IIS仍然为请求返回404,即使该名称没有活动站点,Nginx也不知道服务器已死.

注意:无论是否有服务器,IIS都会返回404,但它已停止,或者没有服务器.

思考?解决方案?

– 其他信息:好的,我在80(5000)以外的端口上添加一个站点,然后在该端口的连接上询问了一个不存在的站点,我得到了预期的错误400(无效的主机名).因此,虽然IIS没有在端口80上侦听通用(无主机名)连接,但似乎有些东西.任何想法如何让httpsys转储它正在侦听的列表?

这是设计的. URL预留与URL注册不同,URL注册在应用程序向HTTP.SYS注册正在侦听时动态发生.在URL预留的情况下,HTTP.SYS不知道给定预留中的URL是暂时不可用还是根本不存在.在这种情况下,它只能知道有一个有效的主机名匹配(因为您的强/弱通配符),但URL路径与任何当前注册的侦听器不匹配.

如果您想要400或503响应,则要么不使用任何URL保留,要么使用不包含通配符的显式URL保留.简而言之,如果您配置HTTP.SYS使其可以将URL的前缀与任何Reservation(包括通过Registration创建的动态)匹配,那么它将向侦听应用程序发送请求(如果其余匹配),或者返回如果找不到活动的注册监听器,则为404.

另一种可能更简单的解决方案是使用IIS服务本身来管理发送503.为此,不要停止站点,而是停止与之关联的应用程序池.这将导致在HTTP.SYS中发生完全限定匹配(即使使用wlidcard URL Reservations),但是将导致503,因为没有AppPool来传递请求.

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...