Как перенаправить разные запросы субдомена на другой порт - PullRequest
17 голосов
/ 26 февраля 2009

У меня есть два приложения, одно - 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, и выполнит необходимые перенаправления. 1014 *

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

Ответы [ 5 ]

35 голосов
/ 26 февраля 2009

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

Предполагая, что у вас есть два процесса apache + php, прослушивающие localhost: 82 и localhost: 83 соответственно, запустите третий процесс только для apache, который будет действовать в качестве обратного прокси-сервера. Пусть экземпляр 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>
5 голосов
/ 26 февраля 2009

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

В моем примере у меня есть 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>
3 голосов
/ 18 января 2016

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

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
0 голосов
/ 04 апреля 2013

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

Имя_сервера 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/

0 голосов
/ 26 февраля 2009

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

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...