Вопрос по связке Nginx frontend + Apache backend

Изображение пользователя Condor.

В общем, я месяца три назад уже писал о том, что развернул своё интернет-радио.
Решил, добавить на радио фотогалерею.
И не простую, а достаточно крупную, с парой-тройкой сотен фотографий на страницу.
Всё бы ничего, но только когда кто-то открывает страницу с галереей, потоковое радио начинает заикаться.
Ну, естественно захотелось кеширующий сервер для статики поставить.
Решил попробовать на мамином компе развернуть связку Nginx frontend + Apache backend по инструкции с сайта http://server-help.ru/?p=14.
Прописал в /etc/apache2/ports.conf
Listen :81
В /etc/nginx/nginx.conf:
    server {
    listen 192.168.0.14:80; # ip вашего сервера и порт
    server_name acrobs.net www.acrobs.net; # Имя вашего домена с www и без
    location / {
        proxy_pass http://192.168.0.14:81/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
#        proxy_set_header X-Forwarded-For $proxy_add_x_forwarder_for;
    }
    location ~* \.(jpeg|jpg|gif|png|css|js|pdf|txt|tar)$ {
    # Обрабатываемые типы файлов
    root /var/www;
    # Путь к коренвевому каталогу вашего сайта
    }

В общем, заработать связка заработала, но вопрос интересный появился.
Директива root /var/www; указывает на корень сайта.

А что если у меня сайтов несколько?
То есть в настройках апача:
<VirtualHost *:80>
        ServerName software.nisel.net
        DocumentRoot /var/wwwroot/@_software.nisel.net
</VirtualHost>

<VirtualHost *:80>
ServerName www.software.nisel.net
        DocumentRoot /var/wwwroot/@_software.nisel.net
</VirtualHost>


<VirtualHost *:80>
        ServerName acrobs.net
        DocumentRoot /var/wwwroot/@_acrobs.net
</VirtualHost>

<VirtualHost *:80>
        ServerName www.acrobs.net
        DocumentRoot /var/wwwroot/@_acrobs.net
</VirtualHost>

Естественно, что у каждого виртуального сервера свой корень документов.
Как быть в таком случае?
Или указать основной корень /var/wwwroot и через nginx будет отдаваться вся статика для всех моих сайтов?
Как-то я очкую на боевых сайтах тренироваться...

0
Гость - 12 Август, 2010 - 17:21

что бы это заработало, тебе для каждого сайта придется делать отдельные конфиги, на apache и на nginx

НО, елси заикается радио, даже с 100 фоток, это проблема не сервера(имеется ввиду apache), а проблема канала инета или скорости хардов, хотя радио само по себе кеширует пере отправкой, так что это токо канал....

PS данная связка очень полезна для крупного сайта, на котором уйма фоток и данных, помима текста, музыки и видео..., где 1 или несколько серверов работают на один сайт, типа контакта, особенно если все это еще и не большого размера, но для инетрадио с галереей, это полная ерунда, попробуй лучше eaccelerator (создает из пхп файлов испольняемый код и ускоряет загрузку страницы, не напрягая проц и диск)

Сам долго маялся с этой затеей, так ничего путного не нашел и пока просто отказался от Nginx, до тех пока не найду решение

0
Жюстина - 12 Август, 2010 - 18:18
Изображение пользователя Жюстина.

Так в документации по апачу есть очень даже развёрнутый пример:

Listen 80

NameVirtualHost 172.20.30.40

<VirtualHost 172.20.30.40>
DocumentRoot /www/example1
ServerName www.example1.com
</VirtualHost>

<VirtualHost 172.20.30.40>
DocumentRoot /www/example2
ServerName www.example2.org
</VirtualHost>

<VirtualHost 172.20.30.40>
DocumentRoot /www/example3
ServerName www.example3.net
</VirtualHost>

# IP-based
<VirtualHost 172.20.30.50>
DocumentRoot /www/example4
ServerName www.example4.edu
</VirtualHost>

<VirtualHost 172.20.30.60>
DocumentRoot /www/example5
ServerName www.example5.gov
</VirtualHost>

И как видно там совершенно разные пути...

Тута всё

0
Condor - 12 Август, 2010 - 18:40
Изображение пользователя Condor.

Дык как в апаче это понятно, так и сделано.
Вопрос как это реализовать со стороны ngnix.
Ночью попробую как есть поставить с корнем, в котором корни всех сайтов лежат.

+1
dexif - 16 Август, 2010 - 08:58
Изображение пользователя dexif.

в таком случае обычно создаётся для каждого сайта свой виртуальный сервер в настройках нгинкс со своим корнем...
тоесть в вашем случае должно быть 2 виртуальных сервера обрабатывающих 2 корня
server{
    listen 192.168.0.14:80; # ip вашего сервера и порт
    server_name acrobs.net www.acrobs.net; # Имя вашего домена с www и без
    ...
    root /var/wwwroot/@_software.nisel.net;
}
server{
    listen 192.168.0.14:80; # ip вашего сервера и порт
    server_name software.nisel.net www.software.nisel.net; # Имя вашего домена с www и без
    ...
    root /var/wwwroot/@_acrobs.net;
}

Если конечно я правильно вас понял :)
а может тогда лучше перейти вообще на nginx+php? Радио у меня конечно нету(возможно для его работы необходим апач), но я использую чистый нгинкс :) И к серверу требований по-меньше получается...

0
Condor - 18 Август, 2010 - 18:53
Изображение пользователя Condor.

Во, вот этот конфиг походу должен помочь.
Самый прикол в том, что картинки кешируются и радио нормально играет, только все пути в джумле сбиваются и сайты отображаются как бы без шаблона, а только текстом.
Счас буду пробовать.
Спасибо за совет!

0
Condor - 18 Август, 2010 - 19:25
Изображение пользователя Condor.

Спасибо за совет!
Всё получилось.
Nginx стал кешировать картинки, нагрузка на апач снизилась, радио практически не заикается, при открытии галереи.
Сейчас осталось найти как ограничить скорость отдачи статики.
А то, 40 метров картинок на одной из страниц, действительно немного перегружают канал...
Вот если ограничить скорость, то и радио могло бы без проблем играть, и галерея бы открывалась, хоть и немного медленнее.

0
Гость - 28 Июнь, 2011 - 20:04

Здравствуйте!
Сегодня попробовал эту штуку:
location ~* \.(jpeg|jpg|gif|png|css|js|pdf|txt|tar)$ {
# Обрабатываемые типы файлов
root /var/www;
# Путь к коренвевому каталогу вашего сайта
}

Попробовал закомментировать строчку:
root /var/www;

Картинки так же грузятся как ни в чем не бывало, с любого виртуального хоста.
Это конечно клево, можно не писать виртуальные хосты в конфиг nginx, но может есть в чем-то подвох?

0
Condor - 30 Июнь, 2011 - 04:08
Изображение пользователя Condor.

Картинки и будут грузиться, только кешироваться не будут.

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры