2015-06-09 2 views
0

SetupNginx и IIS - работа с недопустимым именем хоста и SSL

Client < = (HTTPS) => Nginx балансировки нагрузки < = (HTTPS) => IIS 8

(я знаю некоторые люди, хотел бы спросить, почему использовать SSL между Nginx и IIS, но это не тема моего вопроса здесь.)

случай ошибки

Клиент-спамер/сканирование подключается к SSL с недопустимым именем хоста, например. имя хоста, указанное клиентом, содержит звездочку (*). Это заставляет IIS закрыть соединение во время рукопожатия, а Nginx берет это, когда IIS не работает.

Когда все серверы IIS затем опускаются, следующий запрос получает «плохой шлюз» из nginx. Это позволяет клиентам ошибочно манипулировать nginx, полагая, что IIS не работает.

Как исправить?

Как это исправить?

  • Можно ли отклонять запросы в Nginx конфигурации с недействительными хостов на основе глядя на персонажей?
  • Или можно ли IIS вести себя по-разному в этих случаях? У IIS уже есть привязка всех ssl-привязок, которая только возвращает 403 запрещенных, но это не попадает в объясненный случай.
  • Или мне нужно указать все допустимые имена хостов, конкретно в конфигурации nginx?
+0

Вы настройки хоста по умолчанию, как поймать все в случае отсутствия матча? вы можете использовать «карту» для обнаружения таких имен хостов с одним IF в своем блоке (-ах), чтобы вернуть 403, чтобы он никогда не доходил до iis. – itpp13

+0

Веб-сайт по умолчанию: ДА - в IIS есть сайт по умолчанию, на котором все HTTP и HTTPS-запросы не соответствуют любому другому сайту, но если клиент имеет имя хоста * .mywebsite.com и использует SSL, то сайт по умолчанию IIS не является hit - вместо этого nginx просто репозирует, что восходящее (IIS) закрытое соединение во время ssl рукопожатия. Что касается «IF»: можете ли вы привести пример? Спасибо :) –

ответ

0

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

http { 
 
    ..... 
 
    map $request_uri $blockit { 
 
     default    0; 
 
     ~*\*\.;    1; 
 
    } 
 
    ..... 
 
    server { 
 
     ..... 
 
     location/{ 
 
      if ($blockit) { return 403; } 
 
      .....

+0

Думаю, мне нужно немного объяснить это. :) Что соответствует этому регулярному выражению, которое вы дали? –

+0

*. но, конечно, вам нужно выяснить, как вы создаете регулярное выражение, которое захватывает ваши потребности, простой тестовый скрипт perl может помочь в тестировании, прежде чем переместить его на nginx – itpp13

Смежные вопросы