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

Sergey Shepelev temotor at gmail.com
Thu Jul 23 20:36:41 MSD 2009


2009/7/23 Alex, the Marrch Ca'at <marrch.caat at gmail.com>:
> Понимаете ли, я-то знаю, что конкретно в моем случае это одно и то же.
> И доменов у меня ОЧЕНЬ много, поэтому просто фиксированный рерайт мне
> не годится и не является оптимальным решением конкретно в моей
> ситуации.
>

Не вижу связи между количеством доменов и пригодностью рерайта.

Скрипт генерит конфиг вида:

server { server_name www.some; rewrite ^ http://some$request_uri permanent; }
server {
  server_name some;
... нормальный конфиг
}

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

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

P.S.: честно говоря, я устал заморачиваться на скорости матчинга имени
сервера. Но правда в том, что 301 нужен для поисковиков.
Хотя есть еще маленькие радости в редиректе.
Пришел один юзер на www, редиректа не было. Побродил и какую-то
страницу сохранил на публичный сервис закладок.
Пришёл другой без www, редиректа не было. Побродил и какую-то страницу
сохранил на публичный сервис закладок.
В итоге, на сервисе закладок две разные ссылки, у них разные рейтинги,
блаблабла. А виноваты: программист закладок, который не сделал
проверки дубликата www. и админ, который не сделал редирект.

> 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