Два DNS к тому же IP

Выступание за IIS...

Я корректен в предположении, что основа uri будет всегда начинаться "/"

Да. (Хотя поле называют ** cs - ** основа uri.)

и что никакое другое поле никогда не будет?

Нет. Несколько других полей могли бы начаться "/", такие как:

  • cs-имя-пользователя (для пользователя, имя которого начинается "/", который нечетен, но совершенно законен),
  • cs (Cookie) (совершенно законный для cookie для начала "/")
  • cs-uri-query (хотя это должно быть закодировано uri к %2f, это - иждивенец браузера),
  • cs (Агент пользователя) (начинается с "Mozilla" или "Opera" для браузеров, но существуют буквально тысячи различных пауков, роботов, и т.д. то использование любой вид случайного агента пользователя, которому они чувствуют себя подобно),
  • cs (Referer) (большинство браузеров отправляет полный URL, но это, был бы возможен для клиента отправить что-то еще как относительный URL).

Снова, я не могу говорить ни за какие другие веб-серверы, но в IIS, было бы чрезвычайно неблагоразумно предположить, что cs-uri-stem является единственным полем, которое начинается "/".

--

PS: Вы видели LogParser? (загрузка или документы)

0
задан 21 September 2010 в 03:32
4 ответа

Да, это довольно легко сделать с mod_proxy апача. Как Вы предположили, я перемещу кота для портирования 8080, или что-то и затем иметь апача слушает на 80. Аналогично, скажите установку sinatra для слушания на порте 8888. Затем в апаче, Вы делаете что-то вроде этого:

<Virtualhost *:80>
    ServerName domain1.com

    # Proxy through to tomcat, listening on port 8080
    <Location />
                ProxyPass http://localhost:8080/
                ProxyPassReverse http://localhost:8080/

                Order allow,deny
                Allow from all
    </Location>
</VirtualHost>

<VirtualHost *:80>
    ServerName domain2.com

    # Proxy through to sintra, listening on port 8888
    <Location />
                ProxyPass http://localhost:8888/
                ProxyPassReverse http://localhost:8888/

                Order allow,deny
                Allow from all
    </Location>
</VirtualHost>

(удостоверьтесь, что mod_proxy установлен и включен),

То, когда это завершено, необходимо смочь ввести domain1.com (предполагающий, что у Вас уже есть запись DNS для этого, указало на Ваш сервер) в Вашем браузере, и апач проксирует до кота, слушающего на 8 080. Аналогично, domain2.com будет проксирован до sinatra.

Я уверен, что это могло быть сделано легко с nginx, haproxy, или чем-то еще довольно легко. У меня нет опыта с теми, тем не менее, таким образом, необходимо будет посмотреть в другом месте, если Вы хотите пойти то направление.

1
ответ дан 4 December 2019 в 22:50

Можно также использовать iptables получить результат, подобный использованию mod_proxy (поскольку ErikA показывает Вам). В основном Вы перенаправляете пакет к другому порту на основе исходного IP, чего-то как:

sudo iptables -t nat -A PREROUTING -p tcp -s domain1.com --dport 80 -j REDIRECT --to-ports 8080
sudo iptables -t nat -A PREROUTING -p tcp -s domain2.com --dport 80 -j REDIRECT --to-ports 8081

Здесь кот слушает на порте 8080, и sinatra слушает на порте 8081.

(можно хотеть использовать что-то как Shorewall или некоторый другой инструмент управления брандмауэром вместо управления iptables непосредственно)

1
ответ дан 4 December 2019 в 22:50

Только один процесс может обычно собственный порт, таким образом, Вам будет нужна некоторая форма Прокси HTTP для фактического слушания на порте 80, который имеет ум для передачи запросов к Tomcat или sinatra на основе имени хоста (или безотносительно других критериев, как путь URL). В то время как Apache mod_proxy может сделать это, он имеет некоторые ограничения, и Apache может быть тяжеловесом. Я предложил бы специальный прокси как nginx или lighthttpd. Намного меньшее место с точки зрения памяти, и быстрее при высокой загрузке, если это - Ваша потребность.

0
ответ дан 4 December 2019 в 22:50

То, что Вы ищете, называют 'Виртуальным Хостингом'. Google это и Вы найдет много ПРАКТИЧЕСКИХ РУКОВОДСТВ.

-1
ответ дан 4 December 2019 в 22:50

Теги

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