Помощь - Поиск - Пользователи - Календарь
Полная версия: Установка nginx в режиме акселлератора
Онлайн-форум hostobzor.ru > Архив (темы до 1.06.2015). Только для чтения. > Коммерческий хостинг. Общие форумы > Виртуальный сервер и Виртуальный Выделенный Сервер
A.Melnik
Учитывая техническую особенность хостинга *****, когда каждый сайт работает под индивидуальным пользователем и имеет ограниченный пул коннектов, зависящий от тарифного плана, то некоторые неофиты считают, если выделенно 50 подключений то больше 50 человек на сайт не зайдут.

Я использую nginx в качестве аккселератора. Когда запрос от клиента направляется к серверу, то он попадает на nginx, который в свою очередь запрашивает содержимое у вебсервера apache и потом отдает его клиенту. Секрет прост - пока nginx отдает содержимое - apache доступен для новых запросов. Особенно это актуально для медленных клиентов и wap сайтов.

Теперь я расскажу как это сделать. Необходим будет сам nginx, поддержка nat в iptables и mod_rpaf по желанию.
Я настраиваю nginx на порту отличном от 80-го, где работает apache. Допустим на 85-ом. Необходимо сконфигурирвать nginx так, чтоб все запросы передавались apache, так как на одном IP может быть много виртуальных хостов:
listen 66.29.116.100:85;
access_log off;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://66.29.116.100:80;
}
}


После этого запустите nginx и проверьте, открывается ли сайт на 85 порте. Думаю, что все будет работать если вы не просто скопируете но еще и замените IP на свой.

Если все работает, осталось только пробросить запросы с 80 порта на 85. Делается это с помощью iptables:
iptables -t nat -A PREROUTING -p tcp -m tcp -d 66.29.116.100 --dport 80 -j DNAT --to-destination 66.29.116.100:85

Для того, чтоб в логах apache указывались IP клиентов - надо поставить mod_rpaf и указать там IP, которые передают запросы nginx:
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 66.29.116.100


Надеюсь, что эта информация будет полезна.

***
Реклама в этом разделе запрещена, поэтому название компании удалено/ Moderator
r2w
Цитата(A.Melnik @ 26.10.2007, 16:41) *

сайт работает под индивидуальным пользователем

Это php в режиме cgi?

Цитата

и имеет ограниченный пул коннектов, зависящий от тарифного плана, то некоторые неофиты считают, если выделенно 50 подключений то больше 50 человек на сайт не зайдут.

На каком уровне ограничиваются подключения?
MiksIr
А теперь я расскажу, как делают чаще всего wink.gif
Обычно вешают апач на 127.0.0.1:80 и рулят туда с nginx который слушает 80-й на внешнем адресе wink.gif
И никаких фаирвольных редиректов.
DLag
Цитата(MiksIr @ 26.10.2007, 13:06) *

А теперь я расскажу, как делают чаще всего wink.gif
Обычно вешают апач на 127.0.0.1:80 и рулят туда с nginx который слушает 80-й на внешнем адресе wink.gif
И никаких фаирвольных редиректов.

А если IP несколько задействовано, в первом варианте это еще можно решить, а в вашем уже никак.
Чаще как раз вешают Апач на внешний 8080, нгинкс на 80 и проксируют.
Valeriy Kotelov
Интересная статья,у нас это реализовано почти также smile.gif

Цитата
А если IP несколько задействовано, в первом варианте это еще можно решить, а в вашем уже никак.

http://otvety.google.ru/otvety/thread?tid=26436fe31991b29a - в конце статьи,представленна идея реализации Nginx+apache+DirectAdmin с сохранием всех (!) функций у директАдмина.
DLag
Цитата(Unlimits Telecom @ 26.10.2007, 18:34) *

Интересная статья,у нас это реализовано почти также smile.gif
http://otvety.google.ru/otvety/thread?tid=26436fe31991b29a - в конце статьи,представленна идея реализации Nginx+apache+DirectAdmin с сохранием всех (!) функций у директАдмина.

Порадовало:
Цитата
скопировать шаблоны конфигов апача в custom (подробнее про это есть на help.directadmin.com)
в шаблонах изменить порт на например 81 (и/или наверное |ip| на 127.0.0.1)
пересоздать все конфиги хттпд (про это тоже на help.directadmin.com)
повесить nginx на 80ый порт, проксировать все на 127.0.0.1
Для отдельных сайтов, если надо отдавать много статики - прописать их вручную или написать парсилку уже готовых конфигов
Потом пересобирать апач с mod_realip, чтобы ДиректАдмин корректно считал трафик и статистику."

На втором Апаче не заработает 100%, провено временем, просто самый варжный темплейт зашит наглухо в ДА. Решается простенький Перл скриптом.
Хотя конечно в плане портмапинга все смотрится намного страшнее, но работает не хуже, да и лишних правил в фаере нет. smile.gif
A.Melnik
Цитата(r2w @ 26.10.2007, 12:46) *

Это php в режиме cgi?
На каком уровне ограничиваются подключения?


У нас mod_php с peruser собственной модификации.
Ограничиваются на двух уровнях - числом пула в конфигурации вебсервера и числом максимальных процессов в lmits.conf

Unlimits Telecom, хорошие идеи обычно возникают сразу у нескольких людей, это не удивительно smile.gif

DLag, у нас изменены все шаблоны для конфигурационных файлов apache, так как мы используем расширенные настройки peruser на каждый сайт. Какой шаблон жестко прошит?
DLag
Когда на сервере больше одного активного IP вписано в ДА, то при каких-либо модификациях с ним ДА переделывает ips.conf.
Можно полечить изменением user.conf-ов, но это создаем много проблем.
MiksIr
Цитата(DLag @ 26.10.2007, 19:28) *

А если IP несколько задействовано, в первом варианте это еще можно решить, а в вашем уже никак.
Чаще как раз вешают Апач на внешний 8080, нгинкс на 80 и проксируют.

Nginx вешается на нужные IP слушает их, и проксирует все на единый адрес апача. Апачу тут разные IP совсем не нужны. Если апачей много, то в вашем распоряжении 127.0.0.0/8 - думаю, хватит.

А с вашей схемой вылезает часто косяк со скриптами, которые конструируют урлы на основе входных данных (в т.ч. и на основе номера порта).
DLag
Цитата(MiksIr @ 26.10.2007, 20:34) *

Nginx вешается на нужные IP слушает их, и проксирует все на единый адрес апача. Апачу тут разные IP совсем не нужны. Если апачей много, то в вашем распоряжении 127.0.0.0/8 - думаю, хватит.

А с вашей схемой вылезает часто косяк со скриптами, которые конструируют урлы на основе входных данных (в т.ч. и на основе номера порта).

И ручная корректировка, не интересно.
MiksIr
Ручная корректировка чего?
DLag
Цитата(MiksIr @ 26.10.2007, 21:38) *

Ручная корректировка чего?

Конфигов, либо написание скриптов корректировки.
А так панель сама справляется.
MiksIr
Ну возможно для кого-то это сложнее, чем просить клиентов править их "неправильные" скрипты wink.gif
Насчет панелей я не спец, все всегда делал по старинке, своими силами, но, думается, в грамотной панели это дложно легко правится.
Тем более все-равно туда нужно добавлять поддержку конфигурации энжиникса.
eSupport.org.ua
Цитата(DLag @ 26.10.2007, 20:20) *
Когда на сервере больше одного активного IP вписано в ДА, то при каких-либо модификациях с ним ДА переделывает ips.conf.
Можно полечить изменением user.conf-ов, но это создаем много проблем.

Настройте 1 раз ips.conf и запретите запись
Перед модификацией IP снимите запрет а потом опять поставите.

DLag
Цитата(eSupport.org.ua @ 27.10.2007, 09:21) *

Настройте 1 раз ips.conf и запретите запись
Перед модификацией IP снимите запрет а потом опять поставите.

Зачем такая морока?
Я уже писал, Перловый скрипт в одну строку все решает и дальше панели больше не вылазим.
Это большой плюс когда есть главный админ и пара помощников.
Drow
Как потребителю, скажите, реально совместить DA+Apache2+Nginx при сохранении полной функциональности DA, т.е. любые изменения, апдейты, SSL, я хочу картинки через Nginx отдавать, стоит ли такой тюнинг выделки, может проще ТТХ сервера нарастить? smile.gif
eSupport.org.ua
Цитата(Drow @ 28.10.2007, 18:16) *
Как потребителю, скажите, реально совместить DA+Apache2+Nginx при сохранении полной функциональности DA, т.е. любые изменения, апдейты, SSL, я хочу картинки через Nginx отдавать, стоит ли такой тюнинг выделки, может проще ТТХ сервера нарастить? smile.gif


Да, вполне реально, совсем недавно одному заказчику делал как раз такую настройку.

MasterDedicated
А сколько такая работа примерно стоит будет?
eSupport.org.ua
Так уже собственно все настройки и алгоритм были озвучены... Осталось только вбить IP в конфиги.

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2025 Invision Power Services, Inc.