Доброй ночи.<div><br></div><div>Да, через internal_redirect (вариант 2). Для мелкой статики можно и $r->sendfile использовать. У меня в обоих случаях выставились заголовки.</div><div><br></div><div>Вариант 1 - без редиректов, через $r->sendfile.</div>
<div><br></div><div><div>sub test_vars{</div><div>        my $r=shift;</div><div>        my $file=$r->filename;</div><div>        my ($key,$value)=('key_rfom_var'.(int(rand(100))),'value from var'.(int(rand(100))));</div>
<div>        $r->header_out($key,$value);</div><div>        $r->send_http_header('text/text');</div><div>        $r->sendfile($file);</div><div>        return OK;</div><div>}</div></div><div><br></div><div>
Вариант 2, с редиректом.</div><div><br></div><div><div>sub test_vars{</div><div>        my $r=shift;</div><div>        my $url=$r->uri;</div><div>        $url =~ /\/test_vars\/(.*)$/;</div><div>        my $file=$1;</div>
<div>        my ($key,$value)=('key_rfom_var'.(int(rand(100))),'value from var'.(int(rand(100))));</div><div>        $r->header_out($key,$value);</div><div>        $r->internal_redirect("/stat_vars/$file");</div>
<div>        return OK;</div><div>}</div></div><div><br></div><div><br></div><div><br></div><div>С уважением.</div><div class="gmail_extra"><br><br><div class="gmail_quote">22 ноября 2012 г., 23:35 пользователь Dmitry Zhiltsov <span dir="ltr"><<a href="mailto:zaabjuda@gmail.com" target="_blank">zaabjuda@gmail.com</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Спасибо, понял!<div><br></div><div>Вопрос в догонку, чтобы отдавать статический контент с такими кастомными заголовками необходимо же делать internal rewrite?<div>
<div class="h5"><br><div><div>On 22.11.2012, at 18:33, Maksim Anfilatov <<a href="mailto:maksim@woyager.ru" target="_blank">maksim@woyager.ru</a>> wrote:</div><br><blockquote type="cite">Добрый день.<br><br>С HeaderMore я погорячился, у них прямо в доке But variables won't work in header keys due to performance considerations.
<br><br>С $r->header_out<br><br>в pm<br><br>sub test_vars{<br>        my $r=shift;<br>        my ($key,$value)=('key_rfom_var'.(int(rand(100))),'value from var'.(int(rand(100))));<br>        $r->header_out($key,$value);<br>

        $r->send_http_header('text/text');<br>        $r->print("$key\t$value\n");<br>        return OK;<br>}<br><br>в nginx.conf<br><br>        location /test_vars {<br>                perl charts::test_vars;<br>

        }<br><br>ну и telnet localhost 80<br><br>GET /test_vars HTTP/1.1<br>Host: charts.test<br><br>HTTP/1.1 200 OK<br>Server: nginx/1.2.1<br>Date: Thu, 22 Nov 2012 14:31:17 GMT<br>Content-Type: text/text<br>Transfer-Encoding: chunked<br>

Connection: keep-alive<br>key_rfom_var45: value from var5<br><br>1f<br>key_rfom_var45  value from var5<br><br>0<br><br>GET /test_vars HTTP/1.1<br>Host: charts.test<br><br>HTTP/1.1 200 OK<br>Server: nginx/1.2.1<br>Date: Thu, 22 Nov 2012 14:31:22 GMT<br>

Content-Type: text/text<br>Transfer-Encoding: chunked<br>Connection: keep-alive<br>key_rfom_var77: value from var56<br><br>20<br>key_rfom_var77  value from var56<br><br>0<br><br>GET /test_vars HTTP/1.1<br>Host: charts.test<br>

<br>HTTP/1.1 200 OK<br>Server: nginx/1.2.1<br>Date: Thu, 22 Nov 2012 14:31:26 GMT<br>Content-Type: text/text<br>Transfer-Encoding: chunked<br>Connection: keep-alive<br>key_rfom_var29: value from var1<br><br>1f<br>key_rfom_var29  value from var1<br>

<br>0<br><br><br>С уважением.<br><br><div class="gmail_quote">22 ноября 2012 г., 18:16 пользователь Dmitry Zhiltsov <span dir="ltr"><<a href="mailto:zaabjuda@gmail.com" target="_blank">zaabjuda@gmail.com</a>></span> написал:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">А можно простенький пример?<div><div><br><div><div>On 22.11.2012, at 15:56, Maksim Anfilatov <<a href="mailto:maksim@woyager.ru" target="_blank">maksim@woyager.ru</a>> wrote:</div>

<br><blockquote type="cite">Добрый день.<br><br>В документации сказано только, что значение может содержать переменные.<br><br><a href="http://nginx.org/en/docs/http/ngx_http_headers_module.html" target="_blank">http://nginx.org/en/docs/http/ngx_http_headers_module.html</a><br>


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.
<br><br>Если переменные получаются из встроенного перла, то им же можно выставить кастомный header<br><a href="http://nginx.org/en/docs/http/ngx_http_perl_module.html#methods" target="_blank">http://nginx.org/en/docs/http/ngx_http_perl_module.html#methods</a> $r->header_out<br>


<br>Можно еще попробовать HeadersMore <a href="http://wiki.nginx.org/HttpHeadersMoreModule" target="_blank">http://wiki.nginx.org/HttpHeadersMoreModule</a>.<br><br>С уважением.<br><br><div class="gmail_quote">22 ноября 2012 г., 15:32 пользователь Дмитрий Жильцов <span dir="ltr"><<a href="mailto:zaabjuda@gmail.com" target="_blank">zaabjuda@gmail.com</a>></span> написал:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Здравствуйте.<br><br>Появился вопрос по работе директивы add_header<br><br>Сначала описание задачи.<br><br>Мне необходимо рандомно отдавать клиенту кастомные хидеры из списка<br>


<br>Есть файл в котором на каждой строчке записи вида<br>

<br>$key(имя хидера): $val (содержимое)<br><br>С помощью встроенного перла я получаю две переменные $key и $val , и пытаюсь их применить в директиве add_header<br><br>add_header $key $val <br><br>На клиенте получаю не то , что ожидал<br>




<br>Имя заголовка $key (те nginx не подставляет значение переменной а в имя заголовка подставляет само имя переменной )<br>Тело заголовка как и ожидалось содержит значение переменной $val<br><br>Вопрос - что я делаю не так?<br>




Есть ли у nginx такой функционал?<br>Если нет то какое есть возможное решение?<br><br>Спасибо<br><br><br>
<br>_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br></blockquote></div><br>
_______________________________________________<br>nginx-ru mailing list<br><a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br><a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></blockquote>

</div><br></div></div></div><br>_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br></blockquote></div><br>
_______________________________________________<br>nginx-ru mailing list<br><a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br><a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></blockquote>
</div><br></div></div></div></div><br>_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br></blockquote></div><br></div>