Здравствуйте!
Вопрос в следующем: в локальной сети стоят два веб сервера, на обоих крутится Apache, локалка в инет смотрит через роутер сделанный на Red Hat, реальный айпишник только один, 80 порт редиректится на одну из машин и соответственно все домены по этому порту лезут на ту машину. Можно ли сделать так чтобы переадресация 80 порта шла по имени домена, то есть, один домен на первую машину, второй на другую машину? Если так нельзя, то можно ли к примеру на одной из машин сделать в Апаче 81 порт, но внешне чтобы этот порт не нужно было вводить в адресной строке, может как-то средствами DNS?
Поставьте на том апаче, на который приходит трафик, mod_proxy и отдавайте необходимы через проксирование
>Поставьте на том апаче, на который приходит трафик, mod_proxy и отдавайте необходимы
>через проксированиеМодуль я поставить могу, а дальше не подскажите ка настроить оба апача, ну может примерно?
Не совсем понятно как настроить второй Апач.
А вы увереены что вам нужен второй апач? Один вполне справится с двумя доменами...
>А вы увереены что вам нужен второй апач? Один вполне справится с
>двумя доменами...Дело в том, что на одном сервере стоит панель управления хостингом и на нем крутится несколько сайтов. На другом сервере стоит игровой сервер на Виндовсе, MSSQL сервер, Апач. Скрипты на игровом сервере уже настроены таким образом да и MSSQL что они могут работать только на том компе, извне доступен только сайт. MSSQL подружить с хостинговым сервером не получается, да и переписывать скрипты тоже геморно. В последствии будут еще добавляться сервера с подобной конфигурацией, поэтому хочется решить этот вопрос каким нибудь образом. Конечно самый простой вариант это изменить порты апача для игровых серверов, но доменное имя в таком случае будет некрасиво выглядеть.
Здравствуйте!Не изобретайте велосипед. Читайте внимательно документацию к Apache и будет просветление.
Вот цитата из русской документации. по ссылке от корня документации /manual/vhosts/
Термин виртуальный хост относится к практике размещения более чем одного веб-сайта (например, www.company1.com и www.company2.com) на одной машине. Виртуальный хост может быть как «привязанным к IP-адресу», что означает использование отдельного IP адреса для каждого сайта, либо «привязанным к имени», позволяя вам иметь несколько различных имён для каждого IP-адреса. Факт того, что эти сайты работают на одном и том же физическом сервере, не очевиден конечным пользователям.
Apache был одним из первых серверов, который поддерживал IP-привязанные виртуальные хосты. Версии Apache 1.1 и более новые поддерживают как IP-привязанные, так и виртуальные хосты, определяемые по имени. Последний вариант виртуальных хостов также иногда называют хост-привязанными или не-IP виртуальными хостами.
Ниже вы видите список документов, которые детально объясняют поддержку виртуальных хостов в Apache 1.3 и выше.
Поддержка виртуальных хостов
* Виртуальные хосты, основанные на имени (несколько веб-сайтов на одном IP адресе).
* IP-привязанные виртуальные хосты (отдельный IP адрес для каждого веб-сайта).
* Примеры виртуальных хостов для стандартных случаев.
* Ограничения файловых дескрипторов (или, Too many log files)
* Динамически конфигурируемый массовый виртуальный хостинг
* Подробное обсуждение алгоритма выбора соответствующего хостаКонфигурационные директивы
* <VirtualHost>
* NameVirtualHost
* ServerName
* ServerAlias
* ServerPath
В догонку привожу стандартный файл httpd-vhosts.conf для Апача 2.2
из каталога /usr/local/etc/apache22/extra (FreeBSD)#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.#
# Use name-based virtual hosting.
#
NameVirtualHost *:80#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/docs/dummy-host.example.com"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog "/var/log/dummy-host.example.com-error_log"
CustomLog "/var/log/dummy-host.example.com-access_log" common
</VirtualHost><VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/usr/local/docs/dummy-host2.example.com"
ServerName dummy-host2.example.com
ErrorLog "/var/log/dummy-host2.example.com-error_log"
CustomLog "/var/log/dummy-host2.example.com-access_log" common
</VirtualHost>
>[оверквотинг удален]
> CustomLog "/var/log/dummy-host.example.com-access_log" common
></VirtualHost>
>
><VirtualHost *:80>
> ServerAdmin webmaster@dummy-host2.example.com
> DocumentRoot "/usr/local/docs/dummy-host2.example.com"
> ServerName dummy-host2.example.com
> ErrorLog "/var/log/dummy-host2.example.com-error_log"
> CustomLog "/var/log/dummy-host2.example.com-access_log" common
></VirtualHost>Спасибо, но с виртуальными хостами на одной машине проблем не возникает.
В последствии обсуждения, выработался следующий вопрос - как перенаправить запрос с одного апача на другой, а другой чтобы отвечал первому? Оба стоят в локальной сети.
mod_proxy
и не парьтесь
>mod_proxy
>и не парьтесьэто я уже понял :)
как реализовать? в инете сть только как апач исполшьзовать как прокси, но не могу найти как другой апач подключить к апачу-прокси :(
>>mod_proxy
>>и не парьтесь
>
>это я уже понял :)
>как реализовать? в инете сть только как апач исполшьзовать как прокси, но
>не могу найти как другой апач подключить к апачу-прокси :(я так понял, поиском пользоваться вы не умеете
http://confluence.atlassian.com/display/DOC/Using+Apache+wit...
http://asplinux.net/node/1131
http://www.opennet.me/openforum/vsluhforumID8/4367.html
А я бы поставил nginx на роутер, и разрулил бы им :) Просто как 2 бата об асфальт. И настройки на апачах менять не придётся.
nginx будет в разы эффективней apache+mod_proxy, особенно если apache в prefork да еще и с mod_php. Ставите на гейте nginx на 80 порт. Апач на любой другой, плюс можете апач ограничить локалхостом. Виндовую машину вообще трогать не надо. Ну а дальше прописываете два виртуалхоста в nginx. Полезные ссылки:
http://sysoev.ru/nginx/docs/virtual_hosts.html
http://sysoev.ru/nginx/docs/http/ngx_http_proxy_module.html
http://sysoev.ru/nginx/docs/example.html
>[оверквотинг удален]
>Вопрос в следующем: в локальной сети стоят два веб сервера, на обоих
>крутится Apache, локалка в инет смотрит через роутер сделанный на Red
>Hat, реальный айпишник только один, 80 порт редиректится на одну из
>машин и соответственно все домены по этому порту лезут на ту
>машину. Можно ли сделать так чтобы переадресация 80 порта шла по
>имени домена, то есть, один домен на первую машину, второй на
>другую машину? Если так нельзя, то можно ли к примеру на
>одной из машин сделать в Апаче 81 порт, но внешне чтобы
>этот порт не нужно было вводить в адресной строке, может как-то
>средствами DNS?предложу другое решение - без перелопачивания текущей схемы
на том сервере куда режиректится 80 порт заводим виртуальным хост чисто для редиректа - в нем указываем перманентный редирект скажем на second_domain:81, и собственно на роутере делаем проброс 81 порта на второй веб сервак
клиент долбится на первый веб сервер - ему отсылается редирект на тоже имя но другой порт, после чего заходся по альтернативному порту клиент попадает на второй сервак
>предложу другое решение - без перелопачивания текущей схемы
>на том сервере куда режиректится 80 порт заводим виртуальным хост чисто для
>редиректа - в нем указываем перманентный редирект скажем на second_domain:81, и
>собственно на роутере делаем проброс 81 порта на второй веб сервак
>
>клиент долбится на первый веб сервер - ему отсылается редирект на тоже
>имя но другой порт, после чего заходся по альтернативному порту клиент
>попадает на второй сервакполучается, но есть нюанс, к домену добавляется номер порта :(
>>предложу другое решение - без перелопачивания текущей схемы
>>на том сервере куда режиректится 80 порт заводим виртуальным хост чисто для
>>редиректа - в нем указываем перманентный редирект скажем на second_domain:81, и
>>собственно на роутере делаем проброс 81 порта на второй веб сервак
>>
>>клиент долбится на первый веб сервер - ему отсылается редирект на тоже
>>имя но другой порт, после чего заходся по альтернативному порту клиент
>>попадает на второй сервак
>
>получается, но есть нюанс, к домену добавляется номер порта :(и? добавляется то оно автоматом
пользователь то прозрачно ходит