Re: Вопросы по add_header

Dmitry Zhiltsov zaabjuda at gmail.com
Thu Nov 22 19:35:56 UTC 2012


Спасибо, понял!

Вопрос в догонку, чтобы отдавать статический контент с такими кастомными заголовками необходимо же делать internal rewrite?
On 22.11.2012, at 18:33, Maksim Anfilatov <maksim at woyager.ru> wrote:

> Добрый день.
> 
> С HeaderMore я погорячился, у них прямо в доке But variables won't work in header keys due to performance considerations. 
> 
> С $r->header_out
> 
> в pm
> 
> sub test_vars{
>         my $r=shift;
>         my ($key,$value)=('key_rfom_var'.(int(rand(100))),'value from var'.(int(rand(100))));
>         $r->header_out($key,$value);
>         $r->send_http_header('text/text');
>         $r->print("$key\t$value\n");
>         return OK;
> }
> 
> в nginx.conf
> 
>         location /test_vars {
>                 perl charts::test_vars;
>         }
> 
> ну и telnet localhost 80
> 
> GET /test_vars HTTP/1.1
> Host: charts.test
> 
> HTTP/1.1 200 OK
> Server: nginx/1.2.1
> Date: Thu, 22 Nov 2012 14:31:17 GMT
> Content-Type: text/text
> Transfer-Encoding: chunked
> Connection: keep-alive
> key_rfom_var45: value from var5
> 
> 1f
> key_rfom_var45  value from var5
> 
> 0
> 
> GET /test_vars HTTP/1.1
> Host: charts.test
> 
> HTTP/1.1 200 OK
> Server: nginx/1.2.1
> Date: Thu, 22 Nov 2012 14:31:22 GMT
> Content-Type: text/text
> Transfer-Encoding: chunked
> Connection: keep-alive
> key_rfom_var77: value from var56
> 
> 20
> key_rfom_var77  value from var56
> 
> 0
> 
> GET /test_vars HTTP/1.1
> Host: charts.test
> 
> HTTP/1.1 200 OK
> Server: nginx/1.2.1
> Date: Thu, 22 Nov 2012 14:31:26 GMT
> Content-Type: text/text
> Transfer-Encoding: chunked
> Connection: keep-alive
> key_rfom_var29: value from var1
> 
> 1f
> key_rfom_var29  value from var1
> 
> 0
> 
> 
> С уважением.
> 
> 22 ноября 2012 г., 18:16 пользователь Dmitry Zhiltsov <zaabjuda at gmail.com> написал:
> А можно простенький пример?
> 
> On 22.11.2012, at 15:56, Maksim Anfilatov <maksim at woyager.ru> wrote:
> 
>> Добрый день.
>> 
>> В документации сказано только, что значение может содержать переменные.
>> 
>> http://nginx.org/en/docs/http/ngx_http_headers_module.html
>> Adds the specified field to a response header provided that the response code equals 200, 204, 206, 301, 302, 303, 304, or 307. A value can contain variables. 
>> 
>> Если переменные получаются из встроенного перла, то им же можно выставить кастомный header
>> http://nginx.org/en/docs/http/ngx_http_perl_module.html#methods $r->header_out
>> 
>> Можно еще попробовать HeadersMore http://wiki.nginx.org/HttpHeadersMoreModule.
>> 
>> С уважением.
>> 
>> 22 ноября 2012 г., 15:32 пользователь Дмитрий Жильцов <zaabjuda at gmail.com> написал:
>> Здравствуйте.
>> 
>> Появился вопрос по работе директивы add_header
>> 
>> Сначала описание задачи.
>> 
>> Мне необходимо рандомно отдавать клиенту кастомные хидеры из списка
>> 
>> Есть файл в котором на каждой строчке записи вида
>> 
>> $key(имя хидера): $val (содержимое)
>> 
>> С помощью встроенного перла я получаю две переменные $key и $val , и пытаюсь их применить в директиве add_header
>> 
>> add_header $key $val 
>> 
>> На клиенте получаю не то , что ожидал
>> 
>> Имя заголовка $key (те nginx не подставляет значение переменной а в имя заголовка подставляет само имя переменной )
>> Тело заголовка как и ожидалось содержит значение переменной $val
>> 
>> Вопрос - что я делаю не так?
>> Есть ли у nginx такой функционал?
>> Если нет то какое есть возможное решение?
>> 
>> Спасибо
>> 
>> 
>> 
>> _______________________________________________
>> nginx-ru mailing list
>> nginx-ru at nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>> 
>> _______________________________________________
>> nginx-ru mailing list
>> nginx-ru at nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
> 
> 
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
> 
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20121122/8ddb08de/attachment.html>


Подробная информация о списке рассылки nginx-ru