LINUX.ORG.RU
решено ФорумAdmin

Размещение нескольких веб-приложений на одном хосте.

 , ,


0

1

Имеется проприетарное, standalone веб-приложение, которое слушает порты 80 и 443. Также имеется апач, в котором крутятся два веб-приложения на php, слушающий порт 8080. DNS-имя у машины, скажем webapp.company.com, т.е. пользователь подключается в этим приложениям так: http://webapp.company.com
http://webapp.company.com:8080/webapp1
http://webapp.company.com:8080/webapp2

Но хотелось бы настроить отдельные виртуальные для каждого, и чтобы апач слушал только 80-й порт, т.е. так:

http://webapp.company.com
http://webapp1.company.com
http://webapp2.company.com

Можно ли сделать такой виртуальный хост, который бы перенаправлял все запросы на эту же машину, но на другой порт? У меня Debian 6.


не знаю как под Апач (наверное надо ковырять mod_proxy), а под nginx это настраивается так:

server {
    listen   80;
    server_name webapp.company.com;

    location / {
            proxy_pass  http://127.0.0.1:80;
            include     /etc/nginx/proxy.conf;
    }
}

server {
    listen   80;
    server_name webapp1.company.com webapp2.company.com;

    location / {
            proxy_pass  http://127.0.0.1:8080;
            include     /etc/nginx/proxy.conf;
    }
}

если надо - покажу proxy.conf

WhiteWolf
()
Ответ на: первая ссылка от genesis_error

Не то. Тут описано как сделать несколько хостов на разных портах. Мне же нужно чтобы апач слушал только 80-й порт. И если к нему обращаются по имени webapp.company.com, то он перенаправляет клиента на другой порт.

borism
() автор топика

Оказывается делается это так:

<VirtualHost *:80>
        ProxyPreserveHost On
        ProxyPass / http://127.0.0.1:8080/
        ProxyPassReverse / http://127.0.0.1:8080/
        ServerName webapp.company.com
</VirtualHost>

Для дебиана надо сначала включить модули proxy и proxy_http Спасибо genesis_error и WhiteWolf за подсказки.

borism
() автор топика
Ответ на: комментарий от borism

Эээ, какие прокси, апач умеет и так виртхосты.

dev@kaylee:~$ cat /etc/apache2/sites-available/stable.shit
<VirtualHost *:80>
        DocumentRoot /home/dev/public/stable
        ServerAdmin admin@shit.org
        ServerName stable.shit.org
        ServerAlias shit.org www.shit.org


        ErrorLog "|/usr/sbin/rotatelogs /var/log/apache2/stable.error.%Y-%m-%d.log 86400"
        CustomLog "|/usr/sbin/rotatelogs /var/log/apache2/stable.access.%Y-%m-%d.log 86400" combined
        ServerSignature Off

        Alias /static/     "/home/dev/public/stable/static/"
        Alias /media/   "/home/dev/public/stable/media/"

Точно так же создаёшь сколько тебе надо виртхостов, указывая ДокументРут нужный. Плюс нужно чтобы резолвились имена.

Потом a2ensite stable.shit

wlan ★★
()
Ответ на: комментарий от wlan

И как я укажу документрут на standalone веб-приложение, которое запускается как отдельная служба, а не набор скриптов?

borism
() автор топика
Ответ на: комментарий от borism

mod_proxy включать надо осторожно - иначе твой apache можно будет использовать как http-proxy КУДА УГОДНО(а не только на сконфигуренные ресурсы).
Подробнее тут(про директиву ProxyRequests):
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

Do not enable proxying with ProxyRequests until you have secured your server. Open proxy servers are dangerous both to your network and to the Internet at large.


В некоторых старых дистрах эта директива включена по-умолчанию.

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

В Дебьяне она по умолчанию закомменчена.

borism
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.