Как перенаправить различные запросы поддонов на другой порт

У меня есть два приложения: один – www.myexample.com , другой – blog.myexample.com . Я использую PHP и Apache.

Теперь я хочу, чтобы www.myexample.com на порту 82 моей машины, а blog.myexample.com на порту 83, на той же машине. Как настроить сценарии apache и / или PHP, чтобы при правильном обслуживании запросов на запросы?

Редактировать: Спасибо всем, кто отвечает, но я боюсь, что я не понимаю, вопрос мой!

Я действительно хочу, чтобы имитировать условие, в котором www.myexample.com и blog.myexample.com находятся на разных машинах. Поэтому, когда приходит запрос, сервер шлюза (тот, который также размещает сайт www.myexample.com) проверяет, является ли это запросом для www.myexample.com или для blog.myexample.com и выполняет необходимые перенаправления.

Как это сделать? Благодарю.

Я предполагаю, что у вас есть собственная причина для того, чтобы обе страницы ( www и blog ) запускались на разных портах – и в разных процессах. Если это не то, что вы намеревались, например, вы не хотели иметь два разных процесса, то использование разных портов может быть не таким, каким вы намеревались: вместо этого используйте VirtualHost , чтобы совместно разместить два домена в одном и том же экземпляре apache + php на порт 80. В противном случае прочитайте.

Предполагая, что у вас есть два процесса apache + php, которые прослушиваются на localhost: 82 и localhost: 83 соответственно, вызывают третий, апа-процесс, чтобы действовать как обратный прокси. Попросите обратный прокси-сервер apache прослушивать запросы, поступающие на порт 80 из Интернета, с двумя определениями виртуального хоста. Первое определение виртуального хоста www отправило запросы на localhost: 82, тогда как второе определение виртуального хоста, blog , отправило бы запросы locahost: 83, например:

 NameVirtualHost *:80 # www <VirtualHost *:80> ServerName www.myexample.com ProxyPass / http://localhost:82/ ProxyPassReverse / http://localhost:82/ </VirtualHost> # blog <VirtualHost *:80> ServerName blog.myexample.com ProxyPass / http://localhost:83/ ProxyPassReverse / http://localhost:83/ </VirtualHost> 

Я использую прокси-сервер для этого типа вещей.

В моем примере у меня есть apache 1.3, работающий на порту 80, но мне нужен репозиторий svn для запуска на apache 2.2, и я не хотел набирать: 82 в конце домена каждый раз. Поэтому я сделал перенаправление прокси-сервера на apache 1.3 (порт 80):

 <VirtualHost *:80> ServerName svn.mydomain.com ServerAlias svn ServerAdmin my@email.com <IfModule mod_proxy.c> ProxyPass / http://svn:82/ </IfModule> </VirtualHost> 

Запустите следующую строку на терминале (правильно укажите домен и имя поддомена)

 sudo nano /etc/apache2/sites-available/subdomain.domain.com.conf 

Вставьте следующий код и измените его в соответствии с вашими требованиями.

 <VirtualHost *:80> ServerAdmin admin@domain.com ServerName subdomain.domain.com ServerAlias subdomain.domain.com ProxyRequests Off #ProxyPass / http://localhost:8080/ <Location /> ProxyPreserveHost On ProxyPass http://domain.com:8080/ ProxyPassReverse http://domain.com:8080/ </Location> # Uncomment the line below if your site uses SSL. #SSLProxyEngine On </VirtualHost> 

Выполните следующие строки на терминале (правильно укажите домен и имя поддомена)

 sudo a2enmod proxy sudo a2enmod proxy_http sudo a2enmod subdomain.domain.com.conf sudo service apache2 restart 

Сверху моей шляпы:

 Listen 82 Listen 83 NameVirtualHost 1.2.3.4 # Use your server's IP here <VirtualHost www.myexample.com:82> # Configure www.myexample.com here </VirtualHost> <VirtualHost blog.myexample.com:83> # Configure blog.myexample.com here </VirtualHost> 

Более полным ответом на это было бы сделать что-то вроде этого, что позволит вам настроить прокси-шлюз, что является тем, что было описано выше.

Имя_сервера localhost

 <Proxy *> Order deny,allow Allow from localhost </Proxy> ProxyRequests Off ProxyPreserveHost On ProxyPass / http://localhost:10081/ ProxyPassReverse / http://localhost:10081/ ProxyPassReverseCookiePath / http://localhost:10081/