Маршрутизация запросов приложений: почему некоторые сайты возвращают HTTP 404, а некоторые нет?

Я хочу добавить балансировщик нагрузки в существующий проект asp.net с помощью Application Request Routing. Поэтому я ознакомился с концепциями и создал локальную тестовую установку:

  • IIS локально работает на Windows 10:
    • Маршрутизация запросов установленного приложения 3.0 с установщиком платформы Windows
    • Создана ферма серверов со следующими серверами:
      1. <test-server-name>.de (Microsoft 2012 R2 Server: содержит проект asp.net)
      2. www.google.com (просто посмотреть, работает ли балансировка нагрузки и перезапись URL, потому что у меня нет двух доступных тестовых серверов)

Правило перезаписи URL: правило перезаписи URL

После ввода localhost Несколько раз в любом браузере я вижу, что балансировка нагрузки (взвешенная круговая схема) работает нормально. Он чередуется между 1. и 2. сайт.

Проблема, с которой я сталкиваюсь - ошибка 404 на обоих сайтах.

Я уже попробовал следующее:

  • Установка и включение правил отслеживания невыполненных запросов (на локальном IIS): перезапись URL работает правильно, я думаю.
    Журнал невыполненных запросов для www.google.com: google drive, разархивируй и открой xml например, IE для лучшего обзора

  • Создание фермы серверов без автоматического создания правил перезаписи URL

    (выберите Нет и создайте собственное правило перезаписи URL)

  • Измените настройку "Managed Pipeline Mode" пула приложений с интегрированного на классический

  • Healthcheck на других сайтах Я понятия не имею, почему он работает на Git-сайтах и ​​почему Facebook возвращает код ошибки 400.

  • Включение / отключение прокси (IIS-Manager -> Кэш маршрутизации запросов приложений -> Настройки прокси-сервера...)

Я не знаю, что я мог бы сделать дальше, поэтому я ценю любую помощь. Благодарю.

1 ответ

Решение

Ответ можно найти здесь: https://forums.iis.net/t/1238739.aspx?Why+some+sites+return+HTTP+404+some+don+t+

Некоторые сайты просто не поддерживают localhost в качестве имени хоста, поэтому localhost не может быть найден (ошибка 404), например, на google.com

Подробный ответ, если ссылка выше не работает в будущем:

Это не эффективный тест.

Вы отправляете имя хоста вашего запроса на сторонние серверы. Как Google.

Поэтому, если ваш запрос, скажем, http://example.com/ вы отправляете это на адрес www.google.com, и серверы Google, скорее всего, отклонят это, как вы можете видеть.

Администраторы веб-сервера обычно не позволяют себе получать трафик от домена, который они не размещают.

Если бы вы отправили запрос на мой сервер IP с mysite.com, я бы тоже, вероятно, отклонил его. (Вещи становятся сложными, если у вас есть подстановочные сайты и вы пропускаете весь трафик)

Но просто показать, что страница 404 из Google означает, что запрос на тур попадет туда на сервер, что означает, что ARR работает.

Если вы действительно хотите проверить это таким образом, создайте локальный файл хоста с адресом www.google.com, определяющий IP-адрес вашего сервера. Создайте сайт с www.google.com в качестве основного заголовка, и тогда вы увидите правильную информацию, попавшую в Google. Но нет никакого учета того, что сторонние администраторы делают на их стороне.

Другие вопросы по тегам