我有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转储它正在侦听的列表?
如果您想要400或503响应,则要么不使用任何URL保留,要么使用不包含通配符的显式URL保留.简而言之,如果您配置HTTP.SYS使其可以将URL的前缀与任何Reservation(包括通过Registration创建的动态)匹配,那么它将向侦听应用程序发送请求(如果其余匹配),或者返回如果找不到活动的注册监听器,则为404.
另一种可能更简单的解决方案是使用IIS服务本身来管理发送503.为此,不要停止站点,而是停止与之关联的应用程序池.这将导致在HTTP.SYS中发生完全限定匹配(即使使用wlidcard URL Reservations),但是将导致503,因为没有AppPool来传递请求.