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

Alex, the Marrch Ca'at marrch.caat at gmail.com
Thu Jul 23 18:49:57 MSD 2009


Спасибо за помощь. Я в принципе знаю, что регулярное выражение может
содержать выделения, я только вот не понимаю - если у меня есть такой
вот примерно кофиг:
   server {
       server_name   ~^(www\.)?(.+)$;

       location ~ /([a-zA-Z]*)/([a-zA-Z]*).php$ {
           root  /sites/$2;
       }
   }
- то что окажется в $2 на момент обработки директивы root? Мне это,
увы, совершенно не очевидно :(

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

С уважением -
Alex, the Marrch Ca'at.

2009/7/23 Sergey Shepelev <temotor at gmail.com>:
> 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;
>        }
>    }
>
>> Вообще, на сайте Игоря Сысоева я не нашел никаких описаний вот таких
>> вот базовых вещей. Собственно, даже само существование операторов 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