Добрый день
хотел бы попросить у Вас помощи
дело в том, что я хочу выдывать картинки через ngix, а сейчас это все лежит на апаче, который медленно но верно .. умирает под наргрузкой ;)
поэтому решил...отдавать статику через ngixу меня 70 сайтов.. как можно без болезнено сделать такой переход ?
>Добрый день
>хотел бы попросить у Вас помощи
>дело в том, что я хочу выдывать картинки через ngix, а сейчас
>это все лежит на апаче, который медленно но верно .. умирает
>под наргрузкой ;)
>поэтому решил...отдавать статику через ngix
>
>у меня 70 сайтов.. как можно без болезнено сделать такой переход ?
>Принимать запросы nginx'ом, статику отдавать прямо им, а динамику проксировать на апач. При таком варианте, перенастраивать все 70 сайтов будет не нужно. Вся информация есть на http://sysoev.ru/nginx/. Если будут нужны пояснения и/или помощь, говорите — поможем.
Огромное спасибо за ответ,
но я так понимаю, что
ngix должен висеть на одном айпы и 80 порту
а apache должен висеть на другом айпы и 80 порту
так что мне придется думаю переписать ДНС или просто апач перенести на другой айпы или внутрении айпы его повесить
>Огромное спасибо за ответ,
>но я так понимаю, что
>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
сейчас у меня просто один апач 2.0.59 и 70 сайтов на нем
у меня идея такая
взять ngix повесить его на айпы, где сейчас апач хх.хх.ххх.хх на порт 80
апачу повесить 127.0.0.1 порт 80
ngix будет обратывать только jpg, gif, avi, ну и все в этом роде
все остальнео php,cgi будет рулится на апаче
написал небольшой скрипт, который на основе конфигов виртуальных хостов апачей создал конфиги для nginx.
а можно где нить глянуть его ?! спасибо
>написал небольшой скрипт, который на основе конфигов виртуальных хостов апачей создал конфиги
>для nginx.
>а можно где нить глянуть его ?! спасибоу меня все виртуальные хосты апача описывались в отдельных файлах, соответственно, и скрипт ориентирован на работу с этими файлами, особо универсальным я его не делал.
Предлагаю так: напишите конфиг nginx для одного из этих виртуальных хостов апача, а я подкину адаптированный скрипт. В этом случае мне будет нужен конфиг для этого хоста для nginx и конфиг виртуального хоста апача.
P.S. этот скрипт я писал на php
---------------------- начало ------------------------------------------------------
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.kgaccess_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 {
}
для каждого хоста
к сожалению все настройки хостов хранятся в одном файле
если нужен формат их могу скинуть
>я так понимаю, что нужно вставлять секцию server {
>}
>для каждого хоста
>к сожалению все настройки хостов хранятся в одном файле
>если нужен формат их могу скинутьДа, нужно генерить секцию server для каждого вирт хоста. Кстати, я их такжу храню отдельными файлами, так удобнее.
Давайте еще пример апачевского конфига.
# httpd [domain_name] dmn entry BEGIN.
<VirtualHost IP:80>#
#User vu2003
#Group vu2003
##
#SuexecUserGroup vu2003 vu2003
#ServerAdmin root@zxxxx
DocumentRoot /hosting/zxxxx/htdocsServerName zxxxx
ServerAlias www.zxxxx zxxxx zxxxxAlias /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.
ok.
у меня сейчас начинается совещание примерно на час. Вернусь — брошу скрипт.
спасибо
я тоже сейчас попытаюсь сделать чего .. для чтения конфига
спасибо еще раз за помощь
>спасибо
>я тоже сейчас попытаюсь сделать чего .. для чтения конфига
>спасибо еще раз за помощьсорри, затянулась планерочка...
еще актульно?
>сорри, затянулась планерочка...
>еще актульно?угусь
я тут пока занимался оптимизайцией самого сервера
не получается выставить
REMOTE_ADDR 127.0.0.1
после прокидки через nginx
поставил на apache2 модуль mod_rpaf
выставил все директивы
но не получилось
>не получается выставить
>REMOTE_ADDR 127.0.0.1
>после прокидки через nginx
>поставил на apache2 модуль mod_rpaf
>выставил все директивы
>но не получилосьВ смысле у апача все REMOTE_ADDR 127.0.0.1 ?
можно поставить mod_realip и потом в главном конфиге апача написать RealIP fixups, REMOTE_ADDR станут правильными.
Кстати, с конфигами закончили? Я дико извиняюсь, но некогда было скриптом заниматься....
да у апача все 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
=(
Да конфига просто сгенерировал относительно базы юзеров
да нет ничего
правильно, шо не сделали за меня ...
я делал так
на 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 :(
>я делал так
>на 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
mod_realip
можно на 2.0.59 поставить ?
>mod_realip
>можно на 2.0.59 поставить ?Вот еще статья есть про настройку nginx + apache2 + mod_rpaf:
http://www.nginx.info/index.pl/ru/articlesПосмотрите, может поможет
ну я и тупой ;)
написано же создайте фалй mod_ бла бла бла ;)
а я все директивые в httpd.conf поставил ;)
сейчас создал все ;) и ура работает ;)
>ну я и тупой ;)
>написано же создайте фалй mod_ бла бла бла ;)
>а я все директивые в httpd.conf поставил ;)
>сейчас создал все ;) и ура работает ;):)
>ну я и тупой ;)
>написано же создайте фалй mod_ бла бла бла ;)
>а я все директивые в httpd.conf поставил ;)
>сейчас создал все ;) и ура работает ;)
Applauses.