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

Sergey Shepelev temotor at gmail.com
Thu Jul 23 22:42:55 MSD 2009


2009/7/23 Alex, the Marrch Ca'at <marrch.caat at gmail.com>:
>>  и пусть таких пар будет сотни, тысячи. У нас тоже дофига доменов,
>>  конфиги генерятся по данным из базы. Редиректы работают отлично.
>
> Хм, и при каждом обновлении базы приходится делать reload конфигурации
> сервера? Это нормально?..
>

При каждом обновлении конфигов, которое происходит при каждом
обновлении базы. И чаще раза в 5 секунд конфиги не обновляются. И еще
не обновляются, если уже обновляются в данный момент. Это всё детали
чтоб обновлялку не задёргали до смерти.
Это нормально, не отлично, но нормально. К сожалению, в nginx нет
возможности менять конфиг на лету.

(уголок буквоеда) Менять и перечитывать весь - разные вещи.

reload в nginx отличный. Запросы обрабатываются, никто не
сбрасывается, никто ничего не ждёт. Всё очень чисто и для
пользователей незаметно.

>>  Стопицот директив server работают быстрее чем одна server_name с регекспом.
>
> Ну если это действительно так - то, конечно, нет никаких проблем
> дампить из БД набор таких директив в отдельный файл и инклудить его в
> конфиг... В конце концов, можно это делать по расписанию раз в час,
> ничего страшного.

Ради бога, хотя бы раз в 5 минут сделайте. Час это уж как-то слишком редко.

>>  В итоге, на сервисе закладок две разные ссылки, у них разные рейтинги,
>>  блаблабла. А виноваты: программист закладок, который не сделал
>>  проверки дубликата www. и админ, который не сделал редирект.
>
> Знаете, это весьма разумно все звучит, Вы правы. Я на выходных
> потестирую, и если nginx действительно нормально переживут конфиг с 15
> 000 директив server, то так я и сделаю. А если и нет - то, думаю, что
> один блок

Для 15К директив сервер вам потребуется изменить размер "корзины".

http://sysoev.ru/nginx/docs/hash.html

> server {
>    server_name ~^(www\.)?(.+)$;
>    rewrite ^ http://$2$request_uri permanent;
> }
> - тоже будет работать нормально.

И вот еще Гена подсказывает очень важно про знак вопросительный в конце.

"здесь аргументы запроса будут дублироваться. вместо $request_uri надо
$request_uri?"

> Спасибо!
>
>>  > 2009/7/23 Alexey V. Karagodov <kav at karagodov.name>:
>>  >> очевидно, что Вы пытаетесь решить проблему не с той стороны
>>  >> не всегда сайты www.xxx.com и xxx.com одно и тоже
>>  >> проще сделать рерайт с xxx.com на www.xxx.com или наоборот
>>  >> и правильнее
>>  >>
>>  >> On 23.07.2009, at 18:21, Alex, the Marrch Ca'at wrote:
>>  >>
>>  >>> Доброго всем времени суток!
>>  >>>
>>  >>> Я использую связку nginx+memcached, она обслуживает запросы,
>>  >>> приходящие на большое количество разных доменов, и соответственно - в
>>  >>> включе memcached используется имя домена. Но мне хочется, чтобы при
>>  >>> этом от имени домена автоматически отрезалось начальное "www.", если
>>  >>> оно там имеется, так, чтобы для www.mydomain.ru и mydomain.ru
>>  >>> использовался один ключ memcached. Очевидно, что нужно вместо
>>  >>> следующей инструкции:
>>  >>> set $memcached_key "Tsites::$host::Index";
>>  >>> - использовать if с регулярным выражением, который в случае наличия в
>>  >>> начале $host строки "www." будет подставлять в $memcached_key весь
>>  >>> остаток имени домена. Но вот как это правильно написать в синтаксисе
>>  >>> конфигов nginx - я не знаю, подскажите, пожалуйста.
>>  >>>
>>  >>> Вообще, на сайте Игоря Сысоева я не нашел никаких описаний вот таких
>>  >>> вот базовых вещей. Собственно, даже само существование операторов if и
>>  >>> set становится ясно только из примеров конфига, а на всякие более
>>  >>> сложные вещи - например, то, что можно писать вещи вроде if (!-e
>>  >>> $request_filename) - легко можно так и не наткнуться. Не знает ли
>>  >>> кто-нибудь, вдруг уже кто-то написал справку по таким вот базовым
>>  >>> моментам в конфигурации nginx? Или может, она есть на оф.сайте, просто
>>  >>> я ее не нашел?..
>>  >>>
>>  >>> С уважением и надеждой на помощь -
>>  >>> Alex, the Marrch Ca'at
>>  >>
>>  >>
>>  >
>>
>


More information about the nginx-ru mailing list