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

Alex, the Marrch Ca'at marrch.caat at gmail.com
Thu Jul 23 21:44:58 MSD 2009


>  и пусть таких пар будет сотни, тысячи. У нас тоже дофига доменов,
>  конфиги генерятся по данным из базы. Редиректы работают отлично.

Хм, и при каждом обновлении базы приходится делать reload конфигурации
сервера? Это нормально?..

>  Стопицот директив server работают быстрее чем одна server_name с регекспом.

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

Знаете, это весьма разумно все звучит, Вы правы. Я на выходных
потестирую, и если nginx действительно нормально переживут конфиг с 15
000 директив server, то так я и сделаю. А если и нет - то, думаю, что
один блок
server {
    server_name ~^(www\.)?(.+)$;
    rewrite ^ http://$2$request_uri permanent;
}
- тоже будет работать нормально.
Спасибо!

>  > 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