Запуск Apache вместе с другим веб-сервером?
Вопрос
Был ли у кого-нибудь успешный запуск двух разных веб-серверов, таких как Apache и CherryPy, рядом друг с другом на одном компьютере?Прямо сейчас я экспериментирую с другими веб-серверами, и я хотел бы посмотреть, смогу ли я проводить свои эксперименты, поддерживая другие сайты в рабочем состоянии.Вы могли бы сказать, что это не столько вопрос конкретного программного обеспечения, сколько общий сетевой вопрос.
- Я знаю, что можно запустить два веб-сервера на разных портах;но есть ли какой-нибудь способ настроить их так, чтобы они могли работать на тот же порт (т.е. они оба работают на порту 80)?
- Веб-серверы будут нет обслуживать файлы из тех же доменов.Например, Apache может обслуживать документы с foo.domain.com, а другой веб-сервер будет обслуживать с bar.domain.com.
Я точно знаю, что это не идеальная конфигурация.Я просто хотел бы посмотреть, можно ли это сделать, прежде чем я отправлюсь бежать по кроличьей норе.:)
Решение
У вас не может быть двух процессов, привязанных к одному и тому же порту на одном IP-адресе.Вы можете добавить в это поле другой IP-адрес и заставить каждый сервер прослушивать по одному.
Другой вариант - передать через прокси-сервер один сервер другому.С Apache вы могли бы сделать что-то вроде:
NameVirtualHost *
<virtualhost *>
ServerName other.site.com
# assumes CherryPy listens on port 8080
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</Virtualhost>
Это довольно краткий пример, но вы всегда можете проверить Документация ProxyPass.Однако помните, что приложение, к которому осуществляется прокси-сервер, получит в своих журналах 127.0.0.1 вместо IP-адреса отправителя запроса.Некоторые веб-серверы (apache выполняет с mod_rpaf) может заменить заголовок X-Forwarded-For вместо неправильного IP-адреса.Возможно, у Черрипи это есть?
Другие советы
Лучше всего было бы поместить Apache httpd перед портом 80 и ретранслировать запросы, предназначенные для других серверов, через Apache с помощью модулей.Наиболее популярным сценарием был бы Tomcat за Apache, где вы сможете запускать как php, так и jsp приложения.
Я не знаком с CherryPy, поэтому могу только предложить вам поискать модуль Apache для CherryPy.
Редактировать:Это выглядит многообещающе: http://tools.cherrypy.org/wiki/BehindApache
В качестве альтернативы, согласно правильному ответу Ишмаэля, если у вас есть сервер с 2 сетевыми картами, вы могли бы заставить каждый сервер отвечать на запросы по разным IP-адресам.