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