URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 4874
[ Назад ]

Исходное сообщение
"Apache->Ngix"

Отправлено Alexey , 14-Апр-07 09:14 
Добрый день
хотел бы попросить у Вас помощи
дело в том, что я хочу выдывать картинки через ngix, а сейчас это все лежит на апаче, который медленно но верно .. умирает под наргрузкой ;)
поэтому решил...отдавать статику через ngix

у меня 70 сайтов.. как можно без болезнено сделать такой переход ?


Содержание

Сообщения в этом обсуждении
"Apache->Ngix"
Отправлено mephius , 14-Апр-07 12:28 
>Добрый день
>хотел бы попросить у Вас помощи
>дело в том, что я хочу выдывать картинки через ngix, а сейчас
>это все лежит на апаче, который медленно но верно .. умирает
>под наргрузкой ;)
>поэтому решил...отдавать статику через ngix
>
>у меня 70 сайтов.. как можно без болезнено сделать такой переход ?
>

Принимать запросы nginx'ом, статику отдавать прямо им, а динамику проксировать на апач. При таком варианте, перенастраивать все 70 сайтов будет не нужно. Вся информация есть на http://sysoev.ru/nginx/. Если будут нужны пояснения и/или помощь, говорите — поможем.


"Apache->Ngix"
Отправлено Alexey , 14-Апр-07 12:40 
Огромное спасибо за ответ,
но я так понимаю, что
ngix должен висеть на одном айпы и 80 порту
а apache должен висеть на другом айпы и 80 порту
так что мне придется думаю переписать ДНС или просто апач перенести на другой айпы или внутрении айпы его повесить

"Apache->Ngix"
Отправлено mephius , 14-Апр-07 12:49 
>Огромное спасибо за ответ,
>но я так понимаю, что
>ngix должен висеть на одном айпы и 80 порту
>а apache должен висеть на другом айпы и 80 порту
>так что мне придется думаю переписать ДНС или просто апач перенести на
>другой айпы или внутрении айпы его повесить

Давайте сначала разберемся, как у вас обслуживаются это 70 сайтов.

В качестве примера опишу, как это все работает у меня:

У меня стоят два апача: один 1.3 с подключенным php4 и еще парой особенностей, слушает 127.0.0.1:82, виртуальные хосты Name Based. Аналогичным образом стоит apache 2.2.4 с php5, слушает 127.0.0.1:81

Надо всем этим стоит nginx и слушает 80 порт на всех адресах. В зависимости от хоста, по которому пришел запрос к nginx, он определяет, куда проксировать запрос, на apache 1.3 или apache 2.2.4. Статику отдает сам.

До того, как я построил такую систему, у мен просто стояли отдельно два апача, соответственно на 80 и 81 порту. Это было неудобно по понятным причинам.

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

Итого у меня сейчас порядка 80 сайтов на apache 1.3 и десяток на apache 2.2.4


"Apache->Ngix"
Отправлено Alexey , 14-Апр-07 14:01 
сейчас у меня просто один апач 2.0.59 и 70 сайтов на нем
у меня идея такая
взять ngix повесить его на айпы, где сейчас апач хх.хх.ххх.хх на порт 80
апачу повесить 127.0.0.1 порт 80
ngix будет обратывать только jpg, gif, avi, ну и все в этом роде
все остальнео php,cgi будет рулится на апаче

"Apache->Ngix"
Отправлено Alexey , 14-Апр-07 14:03 
написал небольшой скрипт, который на основе конфигов виртуальных хостов апачей создал конфиги для nginx.
а можно где нить глянуть его ?! спасибо

"Apache->Ngix"
Отправлено mephius , 14-Апр-07 14:08 
>написал небольшой скрипт, который на основе конфигов виртуальных хостов апачей создал конфиги
>для nginx.
>а можно где нить глянуть его ?! спасибо

у меня все виртуальные хосты апача описывались в отдельных файлах, соответственно, и скрипт ориентирован на работу с этими файлами, особо универсальным я его не делал.

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

P.S. этот скрипт я писал на php


"Apache->Ngix"
Отправлено Alexey , 14-Апр-07 14:26 
---------------------- начало ------------------------------------------------------
    user  www www;

    worker_processes  2;

    pid /var/run/nginx.pid;

    #                          [ debug | info | notice | warn | error | crit ]

    error_log  /var/log/nginx.error_log  info;

    events {
        connections   2000;

        # use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];
        use kqueue;
    }

    http {

        include       conf/mime.types;
        default_type  application/octet-stream;


        log_format main      '$remote_addr - $remote_user [$time_local] '
                             '"$request" $status $bytes_sent '
                             '"$http_referer" "$http_user_agent" '
                             '"$gzip_ratio"';

        log_format download  '$remote_addr - $remote_user [$time_local] '
                             '"$request" $status $bytes_sent '
                             '"$http_referer" "$http_user_agent" '
                             '"$http_range" "$sent_http_content_range"';

        client_header_timeout  3m;
        client_body_timeout    3m;
        send_timeout           3m;

        client_header_buffer_size    1k;
        large_client_header_buffers  4 4k;

        gzip on;
        gzip_min_length  1100;
        gzip_buffers     4 8k;
        gzip_types       text/plain;

        output_buffers   1 32k;
        postpone_output  1460;

        sendfile         on;
        tcp_nopush       on;
        tcp_nodelay      on;
        send_lowat       12000;

        keepalive_timeout  75 20;

        #lingering_time     30;
        #lingering_timeout  10;
        #reset_timedout_connection  on;


        server {
            listen        vasya.kg;
            server_name   vasya.kg www.vasya.kg

            access_log   /var/log/nginx.access_log  main;

            location / {
                proxy_pass         http://127.0.0.1/;
                proxy_redirect     off;

                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                #proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;

                client_max_body_size       10m;
                client_body_buffer_size    128k;

                client_body_temp_path      /var/nginx/client_body_temp;

                proxy_connect_timeout      90;
                proxy_send_timeout         90;
                proxy_read_timeout         90;
                proxy_send_lowat           12000;

                proxy_buffer_size          4k;
                proxy_buffers              4 32k;
                proxy_busy_buffers_size    64k;
                proxy_temp_file_write_size 64k;

                proxy_temp_path            /var/nginx/proxy_temp;

            }

            error_page  404  /404.html;

            location /404.html {
                root  /spool/www;
            }

            location ~* ^.+\.(jpg|jpeg|gif|avi|wmv)$ {
                root         /hosting/www.vasya.kg;
                access_log   off;
                expires      30d;
            }
        }
    }

------------------- конец ------------------------------------------------------

я так понимаю, что нужно вставлять секцию server {
}
для каждого хоста
к сожалению все настройки хостов хранятся в одном файле
если нужен формат их могу скинуть


"Apache->Ngix"
Отправлено mephius , 14-Апр-07 14:31 

>я так понимаю, что нужно вставлять секцию server {
>}
>для каждого хоста
>к сожалению все настройки хостов хранятся в одном файле
>если нужен формат их могу скинуть

Да, нужно генерить секцию server для каждого вирт хоста. Кстати, я их такжу храню отдельными файлами, так удобнее.

Давайте еще пример апачевского конфига.


"Apache->Ngix"
Отправлено Alexey , 14-Апр-07 14:41 
# httpd [domain_name] dmn entry BEGIN.
<VirtualHost IP:80>

    #
    #User vu2003
    #Group vu2003
    #

    #
    #SuexecUserGroup vu2003 vu2003
    #

    ServerAdmin     root@zxxxx
    DocumentRoot    /hosting/zxxxx/htdocs

    ServerName      zxxxx
    ServerAlias     www.zxxxx zxxxx zxxxx

    Alias /errors   /hosting/zxxxx/errors/

    ErrorDocument 401 /errors/401/index.php
    ErrorDocument 403 /errors/403/index.php
    ErrorDocument 404 /errors/404/index.php
    ErrorDocument 500 /errors/500/index.php

    # httpd dmn entry cgi support BEGIN.
    ScriptAlias /cgi-bin/ /hosting/zxxxx/cgi-bin/
    <Directory /hosting/zxxxx/cgi-bin>
        AllowOverride None
        #Options ExecCGI
        Order allow,deny
        Allow from all
    </Directory>
    # httpd dmn entry cgi support END.

    # httpd dmn entry PHP2 support BEGIN.
    php_admin_value open_basedir "/hosting/zxxxx/:/usr/local/php5/lib/php/:/tmp/"


    <Directory /hosting/zxxxx/htdocs>
        # httpd dmn entry PHP support BEGIN.
        # httpd dmn entry PHP support END.
        Options -Indexes Includes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>
# httpd [zxxxx] dmn entry END.


"Apache->Ngix"
Отправлено mephius , 14-Апр-07 14:46 
ok.
у меня сейчас начинается совещание примерно на час. Вернусь — брошу скрипт.

"Apache->Ngix"
Отправлено Alexey , 14-Апр-07 14:57 
спасибо
я тоже сейчас попытаюсь сделать чего .. для чтения конфига
спасибо еще раз за помощь


"Apache->Ngix"
Отправлено mephius , 14-Апр-07 18:23 
>спасибо
>я тоже сейчас попытаюсь сделать чего .. для чтения конфига
>спасибо еще раз за помощь

сорри, затянулась планерочка...
еще актульно?


"Apache->Ngix"
Отправлено Alexey , 14-Апр-07 18:42 
>сорри, затянулась планерочка...
>еще актульно?

угусь
я тут пока занимался оптимизайцией самого сервера



"Apache->Ngix"
Отправлено Alexey , 18-Апр-07 15:27 
не получается выставить
REMOTE_ADDR     127.0.0.1
после прокидки через nginx
поставил на apache2 модуль mod_rpaf
выставил все директивы
но не получилось

"Apache->Ngix"
Отправлено mephius , 18-Апр-07 15:33 
>не получается выставить
>REMOTE_ADDR  127.0.0.1
>после прокидки через nginx
>поставил на apache2 модуль mod_rpaf
>выставил все директивы
>но не получилось

В смысле у апача все REMOTE_ADDR 127.0.0.1 ?
можно поставить mod_realip и потом в главном конфиге апача написать RealIP fixups, REMOTE_ADDR станут правильными.
Кстати, с конфигами закончили? Я дико извиняюсь, но некогда было скриптом заниматься....


"Apache->Ngix"
Отправлено Alexey , 18-Апр-07 15:39 
да у апача все 127.0.0.1

я поставил
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 85.115.198.xx

апача 2.0.59 зараза показывает REMOTE_IP - 127.0.0.1

=(
Да конфига просто сгенерировал относительно базы юзеров
да нет ничего
правильно, шо не сделали за меня ...


"Apache->Ngix"
Отправлено Alexey , 18-Апр-07 15:43 
я делал так
на 85.115.хх.ххх - повесил nginx на 80 порт
он пробрасывает на 127.0.0.1 - где стоит апач 2.0.59
для нгикса настройка есть
proxy_set_header  X-Forwarded-For       $remote_addr;

тоже стоит ..
-( но все равно
кажется REMOTE_ADDR 127.0.0.1 :(


"Apache->Ngix"
Отправлено mephius , 18-Апр-07 15:47 
>я делал так
>на 85.115.хх.ххх - повесил nginx на 80 порт
>он пробрасывает на 127.0.0.1 - где стоит апач 2.0.59
>для нгикса настройка есть
>proxy_set_header  X-Forwarded-For       $remote_addr;
>
>тоже стоит ..
>-( но все равно
>кажется REMOTE_ADDR 127.0.0.1 :(

У меня работает так:
у nginx:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

у апача стоит модуль mod_realip + в httpd.conf:
RealIP fixups


"Apache->Ngix"
Отправлено Alexey , 18-Апр-07 15:48 
mod_realip
можно на 2.0.59 поставить ?

"Apache->Ngix"
Отправлено mephius , 18-Апр-07 16:20 
>mod_realip
>можно на 2.0.59 поставить ?

Вот еще статья есть про настройку nginx + apache2 + mod_rpaf:
http://www.nginx.info/index.pl/ru/articles

Посмотрите, может поможет


"Apache->Ngix"
Отправлено Alexey , 18-Апр-07 16:29 
ну я и тупой ;)
написано же создайте фалй mod_ бла бла бла ;)
а я все директивые в httpd.conf поставил ;)
сейчас создал все ;) и ура работает ;)

"Apache->Ngix"
Отправлено mephius , 18-Апр-07 16:32 
>ну я и тупой ;)
>написано же создайте фалй mod_ бла бла бла ;)
>а я все директивые в httpd.conf поставил ;)
>сейчас создал все ;) и ура работает ;)

:)


"Apache->Ngix"
Отправлено hate , 18-Апр-07 17:08 
>ну я и тупой ;)
>написано же создайте фалй mod_ бла бла бла ;)
>а я все директивые в httpd.conf поставил ;)
>сейчас создал все ;) и ура работает ;)


Applauses.