2017-08-27 1 views
0

Je recherche actuellement (à titre personnel seulement) s'il est possible d'écrire un pilote de filtre qui se trouve sous HTTP.sys afin d'intercepter les requêtes.Est-ce que HTTP.sys est un filtre (inférieur/supérieur) ou un pilote de fonction (FDO pour un PDO)?

L'idée est d'examiner s'il est possible de surcharger l'écran 503 Service Unavailable (car apparemment, il est impossible de le remplacer ou de le modifier). Le problème est que je ne suis pas sûr de savoir comment HTTP.sys est implémenté, si c'est un pilote de filtre qui se trouve sous un pilote réseau ou si HTTP.sys est utilisé par un périphérique virtuel.

+0

'http.sys' au conducteur tout ne wdm. il a un héritage. vous pouvez afficher dans l'arborescence des périphériques que ['AddDevice'] (https://msdn.microsoft.com/en-us/library/windows/hardware/ff540521 (v = vs.85) .aspx) dans http.sys est 0 - donc pas wdm – RbMm

Répondre

0

Je pense qu'il n'est pas possible de remplacer la réponse d'erreur 503 de http.sys. En recherchant http 2 api reference, nous ne pouvons que remplacer la verbosité. Le pilote http.sys écoute les requêtes http et les transmet au service qui écoute IP: nom_hôte: combinaison de ports.

Vous pouvez remplacer 503 par iis mais pas par http.sys. Une astuce simple (moins bonne) consiste à configurer un proxy ARR + UrlRewrite et chaque fois que votre service backend lance 503, vous pouvez lancer 503 personnalisé. de frontend comme this.

www.example.com:80 => exampleweb: 80 => localhost: 8080 (site Web actuel).

Et votre site actuel est sur le port 8080. Si elle jette 503, alors vous pouvez jeter sur mesure 503 de exampleweb

Mais ce sera toujours donner 503 erreur si le frontend descend, mais si elle est juste utilisée comme proxy inverse, alors c'est très peu probable. Comme je disais que ce n'est pas vraiment un bon moyen, mais peut-être mieux que d'écrire un pilote de filtre.

+0

Merci pour votre contribution. En fait, dans mon cas, ce que j'ai fait (pour la production) est un autre pool d'applications que nous commutons sur demande chaque fois que nous planifions la maintenance sur notre site (puisque 503 se produisent normalement car aucun pool d'applications n'est disponible). Je comprends qu'il pourrait y avoir des façons différentes (et plus gérées) de gérer le problème; mais pour le moment je suis juste en train d'expérimenter et de voir ce qu'il faut pour réellement implémenter un pilote de filtre pour http.sys –

0

je crois que IIS ne vous permet pas de remplacer 503 (et quelques autres) ... mais ce que vous « pouvez » faire est de frapper httpd devant et utiliser les modules & de ré-écriture pour modifier la proxy inverse réponse.

Quelque chose comme ceci:

  • Set IIS pour écouter sur certains ports internes, ex. 8080, 4434 .. tout ce dont vous avez besoin
  • Configurer httpd devant lui pour écouter sur les ports que vous voulez, ex. 80 et 443
  • Définissez des règles de proxy inverse pour transférer toutes les demandes en conséquence, ex. 80-> 8080 et 443-> 4434
  • Mettre en place rewriterules pour modifier la réponse si elle est un 503