Как выполнить 2 веб-сервера с 2 доменами на 1 Статическом IP

Примерно разговор, Вы хотели бы много серверов в сети, не так в приложении и даже меньше в Ваших уровнях базы данных.

Очевидно, многое из этого зависит от того, что Ваш код на самом деле делает, и как хорошо он записан, но необходимо смочь обработать в среднем 200 пользователей на сервер (если каждый сеанс пользователя не представляет десятки мегабайтов памяти) на Dell R710. Если сеансы пользователя потребуют большой памяти, то некоторая математика, делящая Вашу общую память, что IIS может использовать объемом памяти каждую сессию, потребует, должен привести к Вашим "параллельным пользователям на сервер" число.

С надлежащей настройкой Windows/IIS удивительно устойчив. Я последовательно достигал 10 000 хитов/секунда на сервере IIS6 (как часть отбраковочного испытания прежде, чем собраться подталкивать). Удостоверьтесь, что Вы пристально смотрите на perfmon, когда у Вас есть некоторый код, чтобы сравнить и настроиться соответственно.

1
задан 31 March 2012 в 08:30
1 ответ

Если вы хотите разместить свой веб-сервер на стандартных портах HTTP (80) или HTTPS (443), я думаю, что у вас не может быть ответа двух разных машин в зависимости только от имени домена.

Дело в том, что когда вы заходите на какой-то сайт, вы не получаете доступ к нему через доменное имя - вы просто используете DNS для сопоставления этого доменного имени с IP. Причина, по которой вы можете разместить несколько сайтов на одном IP, - это заголовок Host - см. Раздел 14.23 Host в RFC 2616:

Это работает следующим образом. Допустим, у нас есть два домена a.example.com и b.example.com, указывающие на один и тот же IP-адрес, скажем, 10.0.0.10. Клиент, обычно использующий какой-либо веб-браузер, запрашивает у DNS IP-адрес a.example.com. DNS отвечает 10.0.0.10. Затем клиент отправляет что-то вроде:

Host: a.example.com

Когда ваш веб-сервер получает это, он может определить, что вам действительно нужен a.example.com, а не b.example.com (или, возможно, другие виртуальные хосты на этом веб-сервере).

Однако в вашем примере , у вас нет одного сервера - у вас два сервера. Маршрутизатору потребуется маршрутизировать к одному из них, основываясь исключительно на IP - заголовок Host обрабатывается на уровне приложения, а маршрутизация выполняется на уровне IP (см. модель TCP / IP ). Хотя некоторые маршрутизаторы принимают некоторые решения на основе уровня приложения, я не думаю, что кто-то может так глубоко погрузиться в пакет, чтобы проверить заголовки HTTP и маршрут на основе этого результата.

Что вы можете сделать, это:

  • Сделать одна из двух виртуальных машин по умолчанию, а затем прокси для другой
  • Сделайте третью виртуальную машину, которая будет прокси для обеих текущих виртуальных машин

См., например,

6
ответ дан 3 December 2019 в 16:50

Теги

Похожие вопросы