Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: эмуляция if/else
pavel@xxxxxxxxxxx wrote:
Вариации на тему виртуалдокрут->nginx+apache.
http://trash.pronskiy.ru/nginx.conf
#static delivery images and files
location ~*
^.+\.(swf|gif|jpg|jpeg|png|ico|js|css|xsl|txt|doc|rtf|pdf|rar|zip|gz|tgz|xls)$
{
if (!-f $request_filename) {proxy_pass http://127.0.0.1:8000;}
if ($http_host ~ ^([^.]+)\.([^.]+)\.([^.]+)$) { set $root
/home/$2/$1.$2.$3/www; }
if ($http_host ~ ^www\.([^.]+)$) { set $root
/home/$1/$1.$2/www; }
if ($http_host ~ ^([^.]+)\.([^.]+)$) { set $root
/home/$1/www.$1.$2/www; }
if ($http_host ~ ^mail\.(.*)$) { set $root
/var/www/webmail/www; }
if ($http_host ~ ^mysql\.(.*)$) { set $root
/var/www/phpmyadmin/www; }
if ($http_host ~ ^mailadmin\.(.*)$) { set $root
/var/www/mailadmin/www; }
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
send_timeout 60m;
root $root;expires 1d;
}
Интересный пример! Спасибо.
у меня на шареде конфигурация попроще...домены до 0.5 -1к уник. хостов
проксируются на апач полностью. Для более нагруженных доменов скриптом
генирируется конфиги соотвествующего виртуалхоста в нжинкс (динамика по
прежнему на апач.)
Вопрос другой, не хочется привязываться к статическим расширениям (у
вас их что-то вообще мало)...
location ~*
^.+.(nrg|htm|jpg|jpeg|gif|png|ico|css|zip|7z|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|
wav|bmp|rtf|js|avi|mp3|mp4|mpg|iso|djvu|dmg|flac|r70|mdf|chm|sisx|sis|flv|thm|bin)$
{
root /home/vhosts/domain/public_html/;
}
и постоянно этот списочек расширений статики приходится дополнять...т.к.
пользователи умудряются залить контент в самых немыслимых форматах.
Отказаться полностью от апача мешает апачевский .htaccess ( или
нежелание писать реврайты на все случаи жизни под всевозможные cms)
хотелось бы что-то в духе
location ~* ^.+\.(php|html|shtml)$ {
proxy_pass http://IP;
}
location ~* ^.+\.(..?)$ {
if (!-f $request_filename) {proxy_pass http://IP;}
root /home/vhosts/domain/public_html/;
}
т.е. динамику (php|html|shtml) отдаем на бекенд, а также если путь к
статике динамически сгенерирован - то тоже на бекенд.
Всю остальную предполагаемую статику (..?) отдаем нжинксом.
Такая конфигурация у меня не заработала (статика отдавалась бекендом)
гдето ошибаюсь?
При запросе к статике получаем докрут для любого домена привязанного к
этому ip
Путь к клиентской статике для нжинкс:
/home/domain.tld/www.domain.tld/www/
Если путь к статике динамически сгенерирован - отдаём апачу.
if (!-f $request_filename) {proxy_pass http://127.0.0.1:8000;}
более правильно не использовать if вообще:
Подскажите, насколько больший оверхеад дают использование if по
сравнению с неиспользованием?
--
Wbr, SK
|