ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: variables in charset



On Mon, 9 Oct 2006, Dmitry Morozovsky wrote:

On Mon, 9 Oct 2006, Igor Sysoev wrote:

IS> > а в charset переменные не поддерживаются?
IS> >
IS> >       map $host       $charset {
IS> >                hostnames;
IS> >                default windows-1251;
IS> >                include charsetmap.conf;
IS> >        }
IS> >
IS> >    server {
IS> >        include         listen.conf;
IS> >        server_name     _ * ;
IS> >        charset         $charset;
IS> >     ....
IS> >    }
IS> >
IS> > так нельзя? а хочется...
IS>
IS> Патч. Единственный момент - charset'ы нужно описать или стандартными
IS> charset_map'ами:
IS>
IS> include  conf/koi-win;
IS>
IS> или вот такими пустыми:
IS>
IS> charset_map  iso-8859-5  _  { }

М-м, торможу что-то ;)

Как при этом должен выглядеть charsetmap.conf ?

.domain.tld     include  conf/koi-win;

А где ж здесь кодировка?

Потому что перекодировка меня интересует крайне слабо, главное - чарсет в
заголовке Content-type: (для хостинга, большая часть которого в windows-1251,
но встречаются koi-8r и utf-8)

Тогда, если перекодировка вообще не используется, то так:

charset_map  windows-1251  _ {}
charset_map  utf-8         _ {}
charset_map  koi8-r        _ {}

map $host   $charset {
     ....
     .domain.tld  windows-1251;
     ....
}

Смысл всего действия в том, что nginx изначально внутри себя во время
запроса не оперировал строковыми именами charset'ов: каждому charset'у
на стадии обработки конфига присваивается численный индекс и дальше
работа идёт в основном с ними. В данном случае во время запроса
приходится иметь дело со строками, но для тоже ищется индексы.
А для того, чтобы был индекс, нужно чтобы имя было известно на стадии
конфигурации. Это достигается, например, фиктивыми charset_map'ами.


Игорь Сысоев
http://sysoev.ru



 




Copyright © Lexa Software, 1996-2009.