Нужна помощь по базовому синтаксису конфига nginx

Maxim Dounin mdounin at mdounin.ru
Thu Jul 23 19:01:36 MSD 2009


Hello!

On Thu, Jul 23, 2009 at 06:35:58PM +0400, Sergey Shepelev wrote:

> 2009/7/23 Alex, the Marrch Ca'at <marrch.caat at gmail.com>:
> > Доброго всем времени суток!
> >
> > Я использую связку nginx+memcached, она обслуживает запросы,
> > приходящие на большое количество разных доменов, и соответственно - в
> > включе memcached используется имя домена. Но мне хочется, чтобы при
> > этом от имени домена автоматически отрезалось начальное "www.", если
> > оно там имеется, так, чтобы для www.mydomain.ru и mydomain.ru
> > использовался один ключ memcached. Очевидно, что нужно вместо
> > следующей инструкции:
> > set $memcached_key "Tsites::$host::Index";
> > - использовать if с регулярным выражением, который в случае наличия в
> > начале $host строки "www." будет подставлять в $memcached_key весь
> > остаток имени домена. Но вот как это правильно написать в синтаксисе
> > конфигов nginx - я не знаю, подскажите, пожалуйста.
> >
> 
> http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#server_name
> Регулярное выражение может содержать выделения (0.7.40), которые могут
> затем использоваться в других директивах:
> 
>     server {
>         server_name   ~^(www\.)?(.+)$;
> 
>         location / {
>             root  /sites/$2;
>         }

Только надо иметь ввиду, что такая конструкция сломается от любого 
location'а с регулярными выражениями.  Конструкция 

    server_name ~^(www\.)?(.+)$;

    set $x $1;

    location / {
        root /sites/$x;
    }

немного надёжнее, но тоже сломается после любого rewrite ... last.

Maxim Dounin

>     }
> 
> > Вообще, на сайте Игоря Сысоева я не нашел никаких описаний вот таких
> > вот базовых вещей. Собственно, даже само существование операторов if и
> > set становится ясно только из примеров конфига, а на всякие более
> > сложные вещи - например, то, что можно писать вещи вроде if (!-e
> > $request_filename) - легко можно так и не наткнуться. Не знает ли
> 
> http://sysoev.ru/nginx/docs/http/ngx_http_rewrite_module.html#if
> 
> И вот как раз то, что вы написали надо делать не через if, а через try_files.
> http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#try_files
> 
> > кто-нибудь, вдруг уже кто-то написал справку по таким вот базовым
> > моментам в конфигурации nginx? Или может, она есть на оф.сайте, просто
> > я ее не нашел?..
> 
> Надо искать по архиву рассылки.
> http://www.lexa.ru/nginx-ru/
> 
> >
> > С уважением и надеждой на помощь -
> > Alex, the Marrch Ca'at
> >





More information about the nginx-ru mailing list