Является ли HTTP.sys фильтром (нижним / верхним) или драйвером функций (FDO для PDO)?

В настоящее время я исследую (только для личных целей), возможно ли написать драйвер фильтра, который находится под HTTP.sys для перехвата запросов.

Идея состоит в том, чтобы выяснить, можно ли переопределить экран 503 Service Unavailable (потому что, по-видимому, его невозможно переопределить или изменить).

Проблема в том, что я не уверен, как реализован HTTP.sys, является ли он драйвером фильтра, который находится под каким-то сетевым драйвером, или же HTTP.sys используется некоторым виртуальным устройством.

2 ответа

Я думаю, что невозможно переопределить ответ об ошибке 503 от http.sys. Глядя на ссылку API http 2, мы можем только переопределить многословие. Драйвер http.sys прослушивает http-запросы и передает их службе, которая прослушивает комбинацию IP: имя хоста: порт.

Вы можете переопределить 503 со стороны iis, но не из http.sys. Таким образом, простой прием (не очень хороший) состоит в том, чтобы настроить обратный прокси-сервер ARR + UrlRewrite, и всякий раз, когда ваша серверная служба выдает 503, вы можете выбрасывать пользовательский 503 из внешнего интерфейса, как этот.,

www.example.com:80 => exampleweb:80 => localhost:8080(фактический веб-сайт).

И ваш реальный сайт находится на порту 8080. Если он выбрасывает 503, то вы можете бросить пользовательский 503 из exampleweb.

Но это все равно даст ошибку 503, если интерфейс отключится, но если он просто используется в качестве обратного прокси-сервера, то это очень маловероятно. Как я уже говорил, это не совсем хороший способ, но может быть лучше, чем написание драйвера фильтра.

Я считаю, что IIS не позволяет вам переопределить 503 (и некоторые другие)... но то, что вы "можете" сделать, это дать пощечину httpd перед ним и используйте модули reverseproxy & rewrite, чтобы изменить ответ.

Что-то вроде этого:

  • Установите IIS для прослушивания на некоторых внутренних портах, например 8080, 4434.. все что нужно
  • Установите httpd перед ним, чтобы прослушивать нужные порты, напр. 80 и 443
  • Установите правила обратного прокси для соответствующей переадресации всех запросов, например 80->8080 и 443->4434
  • Настройте rewriterules для изменения ответа, если это 503
Другие вопросы по тегам