Маршрутизация запросов приложений: почему некоторые сайты возвращают HTTP 404, а некоторые нет?
Я хочу добавить балансировщик нагрузки в существующий проект asp.net с помощью Application Request Routing. Поэтому я ознакомился с концепциями и создал локальную тестовую установку:
- IIS локально работает на Windows 10:
- Маршрутизация запросов установленного приложения 3.0 с установщиком платформы Windows
- Создана ферма серверов со следующими серверами:
<test-server-name>.de
(Microsoft 2012 R2 Server: содержит проект asp.net)www.google.com
(просто посмотреть, работает ли балансировка нагрузки и перезапись 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. Но нет никакого учета того, что сторонние администраторы делают на их стороне.