Re: Cache revalidation using If-None-Match
Наверно стоит объяснить почему логику кеширования мы вынесли на бекенд и минимально используем конфиг Nginx. Нашим бекендом, пользуются не только браузеры но и мобил приложения, у них логика кеширования очень продвинутая, там учитывается временное пропадания online, в этом случаи клиентское приложения использует свой локал кеш. Бекенд должен указывать какой кеш можно использовать в ofline какой нет. Так же у нас на разных серверах работают PHPD (daemon), в будущем планируется общения между демонами внутри дата центра, напрямую без Nginx. Скорей всего это будет cURL и по этому бекенд должен уметь сам отвечать за HTTP кеширования а не рассчитывать на Nginx конфиг. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251189,251850#msg-251850 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Cache revalidation using If-None-Match
> Если я правильно понял этот поток текста, то на выходе вы хотите > получить что-то вроде "The stale-if-error Cache-Control > Extension", http://tools.ietf.org/html/rfc5861#section-4. Т.е. > возможность задать в заголовках ответа - можно ли этот ответ в > дальнейшем использовать при ошибках. Да, это очень похоже на то что нам надо. Задача заключается в том, чтобы найти подходящие HTTP заголовки, которые будут переопределять значения таких директив как: fastcgi_cache_lock fastcgi_cache_lock_timeout fastcgi_cache_use_stale Cache-Control: stale-while-revalidate=0 Этот заголовок можно использовать, чтобы включать и отключать директиву cache_lock и настраивать cache_lock_timeout. Если значения stale-while-revalidate равно 0, то для Nginx это должно означать cache_lock off. Если значения stale-while-revalidate положительное это должно означать cache_lock on. Само значения stale-while-revalidate, можно использовать как cache_lock_timeout. Cache-Control: stale-if-error=0 Этот заголовок можно использовать, чтобы отключать директиву cache_use_stale Если значения stale-if-error равно 0, то для Nginx это должно означать cache_use_stale off. > (Планов по реализации соответствующего расширения - по крайней > мере в ближайшем будущем - нет.) Это не срочные работы. Они будут очень полезны для тех кто хочет управлять кешированием через бекенд, а не програмить в конфигах Nginx. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251189,251849#msg-251849 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Cache revalidation using If-None-Match
Hello! On Mon, Jul 14, 2014 at 11:37:21PM -0400, S.A.N wrote: > Nginx 1.7.3, отличная версия, в ней полностью решен вопрос с ETag. > > Но есть мелочи которых очень не хватает, их всего две ) > > 1. Нельзя получить от клиента валидаторы (“If-Modified-Since” и > “If-None-Match”) если файла кеша нет, эта ситуация возникает когда бекенд > отдавал заголовки Cache-Control: private, для контента который должен > кешироватся только в браузере (не публичный кеш). > Проблема решается если в конфиге прописать > fastcgi_param HTTP_IF_NONE_MATCH $http_if_none_match if_not_empty; > fastcgi_param HTTP_IF_MODIFIED_SINCE $http_if_modified_since if_not_empty; > Но тогда будет проблема с публичным кешем, потому что бекенд может получить > валидаторы от браузера, ответить статусом 304, Cache-Control: public... и > Nginx положит этот ответ (статусом 304 nobody) в файл своего кеша и будет > его отдавать всем. > Я уже писал, про эту проблему > http://forum.nginx.org/read.php?21,245951,245951#msg-245951 > Хочется её как-то решить. Самое простое решение этой проблемы - не включать кешироване там, где оно не нужно. > 2. Нельзя переопределить через HTTP заголовки значения директивы > fastcgi_cache_use_stale и установить для кеширования max-age=0 > Для чего это нужно, в конфиге прописывается директива > fastcgi_cache_use_stale error, это значения нужно для 80% uri. > Но есть динамические страницы, которые нужно кешировать, но обязательно > проводить ревалидацию на каждый запрос. > Пример из жизни где мы это юзаем. > Есть страница отчетов с графиками различной статистики, которая может > меняться раз в сутки или каждую секунду, заранее это не известно. Доступ к > этим отчетам имеют только залогиненые пользователи из определенных групп. > Кол-во этих юзеров довольно высоко и количество запросов к этим отчетам так > же высоко, по этому есть смысл их кешировать, но отдавать только после > проведения проверка на вхождения юзара в нужную групу и на актуальность > валидаторов (ETag). > Есть способ как создать кеш с max-age=0, через X-Accel-Expires: $time-1. > Но нет способа как динамически, сказать Nginx не использовать > cache_use_stale для этого uri, прописать в конфиге все варианты этих uri > сложно они динамические и не шаблонные, добавлять какой-то спец признак по > которому можно создать общий location в принципе можно, но хочется более > красивого и системного решения. На мой взгляд таким решением может стать > Cache-Control: must-revalidate, если бекенд отдает этот заголовок, он > сохраняется в кеш, но при повторном использовании кеша, Nginx всегда > выполняет ревалидацию (must-revalidate), если бекенд не работает отдать > клиенту статус ошибки. Это конечно будет иметь определенный оверхед, но > такой кеш намного эффективней, чем каждый раз повторно генерировать отчет и > все графики. Если я правильно понял этот поток текста, то на выходе вы хотите получить что-то вроде "The stale-if-error Cache-Control Extension", http://tools.ietf.org/html/rfc5861#section-4. Т.е. возможность задать в заголовках ответа - можно ли этот ответ в дальнейшем использовать при ошибках. (Планов по реализации соответствующего расширения - по крайней мере в ближайшем будущем - нет.) IMHO, простейшее и наиболее правильное решение - опять же, разделить сайт на location'ы и задать для каждого locatin'а нужные настройки. А если у вас соответствующие ресурсы нельзя нормально отделить друг от друга - это повод задуматься о структуре сайта. -- Maxim Dounin http://nginx.org/ ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Помогите с редиректом
Подскажите можно ли в location добавить AJAX и JSON запросы, что-бы они не редиректились? и если можно, то как? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251769,251846#msg-251846 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Задавать Last-modified на стороне nginx.
Hello! On Tue, Jul 15, 2014 at 02:23:19PM -0400, Budulianin wrote: > Правильно ли я понимаю, что Last-modified нельзя задать, через nginx, для > ответа, который nginx кэширует? > > Можно задавать через add_header Last-Modified $date_gmt; > Но тогда теряется смысл этого заголовка, потому что при каждом обращении к > nginx, в заголовке будет новое значение. > Соответственно If-Modified-Since никогда не совпадёт с этим значением и 304 > не отправят на клиент. > > У статического контента всё просто, Last-modified это дата последнего > изменения. > А вот как задать на стороне nginx Last-modified для ответа полученного на > основе динамической страницы, чтобы он осел в кэше и не изменялся пока не > будет очередного запроса к бекенду? > > Если посылать Last-modified с бекенда, то тогда всё норм, он появится в кэше > nginx и пока он там, проверка If-Modified-Since будет работать и будет > возвращаться 304. > Но это в случае когда Last-modified задаёт бекенд, а как задать через nginx? > Это реально? Вообще такие вещи должен делать бекенд. Если он не умеет и нет возможности его исправить - в качестве костыля можно за кеширующим nginx'ом поставить ещё один (достаточно виртуального сервера в рамках того же nginx'а), сделав двойное проксирование, и добавлять заголовок Last-Modified там, с помощью add_header. Тогда в кеш будет попадать ответ уже с Last-Modified, и запросы с If-Modified-Since будут работать и возвращать 304, пока соответствующий ответ в кеше. -- Maxim Dounin http://nginx.org/ ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
> >Но все эти детали лучше не говорить тем кто только начинает изучать > механизмы кеширования в Nginx ) > Почему? Чтобы не пугать, раньше времени ) Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251837#msg-251837 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
>Но все эти детали лучше не говорить тем кто только начинает изучать механизмы кеширования в Nginx ) Почему? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251835#msg-251835 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Задавать Last-modified на стороне nginx.
Правильно ли я понимаю, что Last-modified нельзя задать, через nginx, для ответа, который nginx кэширует? Можно задавать через add_header Last-Modified $date_gmt; Но тогда теряется смысл этого заголовка, потому что при каждом обращении к nginx, в заголовке будет новое значение. Соответственно If-Modified-Since никогда не совпадёт с этим значением и 304 не отправят на клиент. У статического контента всё просто, Last-modified это дата последнего изменения. А вот как задать на стороне nginx Last-modified для ответа полученного на основе динамической страницы, чтобы он осел в кэше и не изменялся пока не будет очередного запроса к бекенду? Если посылать Last-modified с бекенда, то тогда всё норм, он появится в кэше nginx и пока он там, проверка If-Modified-Since будет работать и будет возвращаться 304. Но это в случае когда Last-modified задаёт бекенд, а как задать через nginx? Это реально? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251834,251834#msg-251834 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
> "логика кеширования в Nginx такая же как в браузерах", - есть и > отличия: > > http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cac > he_bypass > > если выполняется условие fastcgi_cache_bypass и не выполняется > условие fastcgi_no_cache - то это и будет out-of-order обновление > кеша. Да, есть в Nginx инструментарий для изменения логики кеширования... К сожалению есть отличия и в самой реализации кеширования Nginx и браузеров, то что будет работать в браузерах может не работать в Nginx, например Nginx будет удалять валидаторы из клиентских заголовков, если нет файла кеша в Nginx, или невозможность кеширования с max-age=0. Но все эти детали лучше не говорить тем кто только начинает изучать механизмы кеширования в Nginx ) По этому я советую использовать REST стиль в разработке приложений, со временем все эти отличия между Nginx и браузером будут исчезать, и использования директив *_cache_bypass и *_no_cache будет скорей исключением чем правилом, но может я ошибаюсь. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251833#msg-251833 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
On 15.07.2014 17:29, S.A.N wrote: В вашей схеме кеш контента будет валидным столько сколько вы указали Nginx и не важно что браузеры будут делать запрос чаще, Nginx будет отдавать им контент из кеша и не обращаться к вашему приложению, логика кеширования в Nginx такая же как в браузерах, я уже вам объяснял что значит max-age, для Nginx он означает тоже самое - это кол-во секунд на протяжении которых Nginx будет отдавать конент из кеша и не обращаться к вашему приложению. "логика кеширования в Nginx такая же как в браузерах", - есть и отличия: http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_bypass если выполняется условие fastcgi_cache_bypass и не выполняется условие fastcgi_no_cache - то это и будет out-of-order обновление кеша. -- Best regards, Gena ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
>в общем это хороший стиль Ну сейчас все стараются следовать REST. А вот про учёт ревалидации не знал, спасибо, запомню. Обычно GET POST PUT PATCH DELETE, больше пока ничего не видел. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251827#msg-251827 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
> >С этого и надо было начинать, они нужны обязательно если вы хотите > клиенту отдавать 304 без контента. > А можно ли создавать ETag и Last-Modified на стороне nginx и для > статики и для динамики? > > есть директива etag on; но написано что она только для статики > автоматом вычисляет его. > > Можно наверно использовать (Модуль ngx_http_ssi_module поддерживает > две встроенные переменные) > $date_gmt > текущее время в GMT. Формат задаётся командой config с параметром > timefmt. > > Для Last-Modified Возможно можно, точно не знаю, у меня не было потребности это создавать в Nginx на лету. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251826#msg-251826 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
> >Я имел виду, ревалидация В приложении это - RESTful стиль. > > Не знал, насколько я знаю, обычно REST преподносят, как набор > методов(действий), которые можно выполнить с объектом и путь к этому > объекту. Да, но не только, основная идея в том, что клиент и сервер могут полностью описать своё состояния на уровне HTTP заголовков, в общем это хороший стиль который позволит другим приложениям (например Nginx) общаться с вашим приложением на уровне HTTP заголовков. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251825#msg-251825 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
>С этого и надо было начинать, они нужны обязательно если вы хотите клиенту отдавать 304 без контента. А можно ли создавать ETag и Last-Modified на стороне nginx и для статики и для динамики? есть директива etag on; но написано что она только для статики автоматом вычисляет его. Можно наверно использовать (Модуль ngx_http_ssi_module поддерживает две встроенные переменные) $date_gmt текущее время в GMT. Формат задаётся командой config с параметром timefmt. Для Last-Modified Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251824#msg-251824 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
>Я имел виду, ревалидация В приложении это - RESTful стиль. Не знал, насколько я знаю, обычно REST преподносят, как набор методов(действий), которые можно выполнить с объектом и путь к этому объекту. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251823#msg-251823 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
Budulianin Wrote: --- > >Это понятно, ревалидировать кеш на в приложении - это стиль RestFull > приложений, > НЕ в приложении? Я имел виду, ревалидация В приложении это - RESTful стиль. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251822#msg-251822 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
>Это понятно, ревалидировать кеш на в приложении - это стиль RestFull приложений, НЕ в приложении? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251821#msg-251821 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Помогите с редиректом
Огромное спасибо, Это именно то, что мне было нужно !!! Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251769,251820#msg-251820 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
> >те кто обновляет страницу в ручную будут получать 304 статус без > контента, > Только если в запросе, который должен закэшироваться, был > заголовок-валидатор(ETag, Last-Modified) иначе нечего будет > сравнивать. > У меня сейчас нет их и nginx отдаёт 200. С этого и надо было начинать, они нужны обязательно если вы хотите клиенту отдавать 304 без контента. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251819#msg-251819 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
> Значит моя схема вполне жизнеспособна и не выглядит нормально? Кладём > основную нагрузку на nginx и немного на браузер. Я думаю да, но лучше проконсультироватся у разработчиков Nginx, как реагирует Nginx если кеш файлы исчезают, без его ведома, я думаю он нормально реагирует, но мало ли какие там могут быть ньюансы. > Чтобы пилить приложение, на это нужны время-деньги, а настроить nginx > быстро, дёшево и практично. Это понятно, ревалидировать кеш на в приложении - это стиль RestFull приложений, это очень правильный подход и на самом деле не сложный в разработке и его можно выполнять довольно быстро. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251818#msg-251818 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
>те кто обновляет страницу в ручную будут получать 304 статус без контента, Только если в запросе, который должен закэшироваться, был заголовок-валидатор(ETag, Last-Modified) иначе нечего будет сравнивать. У меня сейчас нет их и nginx отдаёт 200. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251817#msg-251817 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
> Я нажимал не F5, а кнопку браузера, что видимо эквивалентно. Но я > тогда не понимаю, когда вообще юзеру поможет браузерный кэш? > Когда он будет по ссылкам ходить, только тогда из кэша браузера будет > доставаться? Да, обычные посетители сайта, обычно переходят на страницы по ссылкам, те кто обновляет страницу в ручную будут получать 304 статус без контента, что тоже очень оптимально, но юзеров которые нажимают на кнопку обновить намного меньше по сравнению с теми кто ходит по ссылкам. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251816#msg-251816 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
>Если у вас есть сторонний процесс который чистит кеш, тогда конечно можно использовать эту схему. Можно по разному чистить кэш, даже руками) Главное сам факт, того что мы можем в любой момент всё у всех актуализировать. Значит моя схема вполне жизнеспособна и не выглядит нормально? Кладём основную нагрузку на nginx и немного на браузер. Чтобы пилить приложение, на это нужны время-деньги, а настроить nginx быстро, дёшево и практично. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251815#msg-251815 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Помогите с редиректом
Hello! On Tue, Jul 15, 2014 at 09:22:01AM -0400, luckysrg wrote: > Спасибо за совет, но все равно остался вопрос как из секции 80 сделать > редирект на страницы корзины и личного кабинета, а из секции 443 все > редиректить на http, кроме страниц корзины и личного кабинета. Точно так же - для начала сделать для соответствующих страниц отдельные location'ы, а потом в нужных location'ах сделать перенаправления: server { listen 443 ssl; server_name example.com; location / { # by default, redirect to http return 301 http://$server_name$request_uri; } location /basket/ { # use https for basket ... } } server { listen 80; server_name example.com; location / { # use http by default ... } location /basket/ { # redirect basket to https return 301 https://$server_name$request_uri; } } Как именно выделить соответствующие страницы в случае вашего сайта, и что ещё потребуется для отображения этих страниц (e.g., картинки, на них используемые) - вопрос в первую очередь к вам. -- Maxim Dounin http://nginx.org/ ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
> браузер не будет делать запросы к статике Это html просто страница с текстом Content-Type: text/html; charset=UTF-8 Делаю запросы, через RestClient(апликуха хрома) и nginx получает только 1 запрос, все остальные запросы из кэша браузера достаются. Кэш браузера чищу, и только тогда nginx пишет в лог. Те браузерный кэш работает. Я нажимал не F5, а кнопку браузера, что видимо эквивалентно. Но я тогда не понимаю, когда вообще юзеру поможет браузерный кэш? Когда он будет по ссылкам ходить, только тогда из кэша браузера будет доставаться? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251813#msg-251813 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
> >Эта схема защитит ваше приложения от нагрузки, но она никак не сможет > актуализировать кеш быстрей чем это указанно в max-age. > Я же сказал, что мы можем чистить кэш nginx когда нам это нужно. Если у вас есть сторонний процесс который чистит кеш, тогда конечно можно использовать эту схему. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251812#msg-251812 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
Budulianin Wrote: --- > >Нет, на протяжении 600 секунд, браузер НЕ БУДЕТ делать запрос к > серверу вообще, потому что вы ему сказали, что кеш можно использовать > без ревалидации на протяжении 600 секунд. > > А у меня запросы идут к nginx, те браузерный кэш не используется. Конечно запросы к Nginx пойдут, если вы нажимаете F5, вы заставляете браузер делать запрос, это нормальное поведения браузера, так и должно быть. Вам нужно по другому тестировать, не обновляйте страницу в ручную, просто ходите по HTML страницам в которых прописаны src к вашей статике, в этом случаи браузер не будет делать запросы к статике, а будет их брать из кеша на протяжении 600 сек. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251811#msg-251811 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
>Лично я разработчик а не администратор, ... ... там и зарплаты другие и задачи интересней ) Такие решения не от меня зависят, я лишь могу предложить. >Эта схема защитит ваше приложения от нагрузки, но она никак не сможет актуализировать кеш быстрей чем это указанно в max-age. Я же сказал, что мы можем чистить кэш nginx когда нам это нужно. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251810#msg-251810 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
>Нет, на протяжении 600 секунд, браузер НЕ БУДЕТ делать запрос к серверу вообще, потому что вы ему сказали, что кеш можно использовать без ревалидации на протяжении 600 секунд. А у меня запросы идут к nginx, те браузерный кэш не используется. первый запрос, все кэши чистые: Request: Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Encoding:gzip,deflate,sdch Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Connection:keep-alive Host:localhost:6543 User-Agent:Mozilla/5.0 Response: Cache-Control:max-age=600 Connection:keep-alive Content-Length:15 Content-Type:text/html; charset=UTF-8 Date:Tue, 15 Jul 2014 14:24:14 GMT Server:nginx/1.7.3 Второй ответ-запрос такой же. В логах nginx видно, что он оба запроса принял. Тк кэш у nginx был, к uwsgi он не прошёл. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251809#msg-251809 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
Budulianin Wrote: --- > >В этом случаи приложения должно уметь очень быстро проверять > If-Modified-Since с текущим Last-Modified, если они равны отдавать > 304, если нет отдавать новый контент и статус 200. > > Под это нужно специально готовить приложение. Обычно приходит GET и > отдаётся 200. Лично я разработчик а не администратор, и я бы больше был мотивирован в доработке приложения, вместо решения этой задачи на уровне админисрирования веб-сервера. P.S. Чем быстрей вы займетесь разработкой приложения, тем быстрей вы из Junior вырастите в Senior разработчика, там и зарплаты другие и задачи интересней ) > А если сделать так: отдавать в кэш браузера, на очень короткий срок > динамические страницы(3-5 мин), > статику(JS, CSS, img) на пару часов. А кэш самого nginx хранить > дольше: динамические страницы(20-30 минут) > статику несколько суток. Тогда если вдруг понадобится быстро поменять > что-то, то мы всегда сможем почистить кэш nginx. > > Таким образом, и браузерный кэш нам помогает, и nginx на себя > принимает основную нагрузку, и мы в любой момент, в очень короткий > срок, можем сделать весь контент у всех пользователей, опять > актуальным. > > Как идея? Вы знаете как определяется скорость каравана? Она равна скорости самого медленного звена каравана. В вашей схеме кеш контента будет валидным столько сколько вы указали Nginx и не важно что браузеры будут делать запрос чаще, Nginx будет отдавать им контент из кеша и не обращаться к вашему приложению, логика кеширования в Nginx такая же как в браузерах, я уже вам объяснял что значит max-age, для Nginx он означает тоже самое - это кол-во секунд на протяжении которых Nginx будет отдавать конент из кеша и не обращаться к вашему приложению. Эта схема защитит ваше приложения от нагрузки, но она никак не сможет актуализировать кеш быстрей чем это указанно в max-age. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251806#msg-251806 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
>В этом случаи приложения должно уметь очень быстро проверять If-Modified-Since с текущим Last-Modified, если они равны отдавать 304, если нет отдавать новый контент и статус 200. Под это нужно специально готовить приложение. Обычно приходит GET и отдаётся 200. А если сделать так: отдавать в кэш браузера, на очень короткий срок динамические страницы(3-5 мин), статику(JS, CSS, img) на пару часов. А кэш самого nginx хранить дольше: динамические страницы(20-30 минут) статику несколько суток. Тогда если вдруг понадобится быстро поменять что-то, то мы всегда сможем почистить кэш nginx. Таким образом, и браузерный кэш нам помогает, и nginx на себя принимает основную нагрузку, и мы в любой момент, в очень короткий срок, можем сделать весь контент у всех пользователей, опять актуальным. Как идея? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251805#msg-251805 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
Budulianin Wrote: --- > Большое спасибо за ответ, теперь понял. > > А если браузер присылает в запросе Cache-Control: no-cache(или > max-age=0), что часто бывает, а я хочу отдавать кэш, мне как-то > игнорировать этот заголовок или если из приложения будет ответ с > Cache-Control: max-age=600, то в браузере в любом случае сохранится > кэш? Браузер в запросе будет присылать Cache-Control: no-cache, только если вы нажали F5 (обновления страницы), браузер говорит что юзер хочет получить новый контент, но при этом браузер высылает и If-Modified-Since, что означает что имеете право не отдавать контент если его версия не изменилась а просто отдать 304 статус и браузер будет использовать контент из своего кеша. Проще говоря вы можете игнорировать Cache-Control: no-cache из запроса, если приходит If-Modified-Since, нл можете и не игнорировать, все зависит от задачи и бизнес логики приложения. > Получается, что Cache-Control: max-age=31536 опасно отдавать, если > не уверен на 100% что ничего не будет меняться. Как потом отменить > этот кэш? Если не менять URI. > > Добавлять версию скорее всего не получится, значит нужно задавать > небольшой max-age даже для статики? Да, если вы не можете менять uri контента, тогда придется указывать небольшой max-age и проводить ревалидацию. В этом случаи приложения должно уметь очень быстро проверять If-Modified-Since с текущим Last-Modified, если они равны отдавать 304, если нет отдавать новый контент и статус 200. Если приложения будет тормозить при ревалидации, тогда смысла от кеширования мало, потому что юзера будут получать задержку, приложения занимать ресурсы сервера. В общем надо делать молниеносную ревалидацию в приложении ) Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251804#msg-251804 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Помогите с редиректом
Спасибо за совет, но все равно остался вопрос как из секции 80 сделать редирект на страницы корзины и личного кабинета, а из секции 443 все редиректить на http, кроме страниц корзины и личного кабинета. Спасибо. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251769,251803#msg-251803 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
Большое спасибо за ответ, теперь понял. А если браузер присылает в запросе Cache-Control: no-cache(или max-age=0), что часто бывает, а я хочу отдавать кэш, мне как-то игнорировать этот заголовок или если из приложения будет ответ с Cache-Control: max-age=600, то в браузере в любом случае сохранится кэш? Получается, что Cache-Control: max-age=31536 опасно отдавать, если не уверен на 100% что ничего не будет меняться. Как потом отменить этот кэш? Если не менять URI. Добавлять версию скорее всего не получится, значит нужно задавать небольшой max-age даже для статики? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251801#msg-251801 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
Нет, на протяжении 600 секунд, браузер НЕ БУДЕТ делать запрос к серверу вообще, потому что вы ему сказали, что кеш можно использовать без ревалидации на протяжении 600 секунд. После истечения 600 секунд, браузер сделает запрос к серверу, передаст ему If-Modified-Since, Nginx сравнит значения If-Modified-Since с значением Last-Modified которое хранится в кеше, если они равны Nginx ответит статусом 304 и передавать ничего не будет, браузер при получения статуса 304 понимает что контент не изменился и продолжает использовать свой кеш на протяжении следующих 600 секунд, и так по кругу, если If-Modified-Since и Last-Modified из кеша не равны, Nginx ответит 200 статусом и отдаст новый контент. Если вы можете, в адреса статики добавлять номер версии, тогда можно реализовать самую простую и надежную схему, отдавать кеш с max-age=31536, но при изменении файлв статики, менять её адрес (в адресе ставится номер версии статики) в самой странице HTML, таким образом вы получите максимальное кеширования и мгновенное обновления кеша. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251800#msg-251800 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
>S.A.N Значит, если в ответе у сервера было Cache-Control max-age=600, в течение 600 секунд, каждый запрос браузера, будет отсылать валидатор(If-modifiet-since или If-non-match) и если валидатор в кэше(nginx) такой же, то будут возвращены только заголовки(304), а спустя 600 секунд, будет просто запрос без валидаторов и тогда уже в любом случае ответ будет с телом(200 ок) вне зависимости, новый там кэш или старый? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251796#msg-251796 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Помогите с редиректом
Hello! On Tue, Jul 15, 2014 at 04:41:45AM -0400, luckysrg wrote: > Всем привет, очень нужна помощь, сайт был полностью на https, в связи с этим > были характерные проблемы с поисковикми, не индексиравались картинки, нет > favicon. Собственно, нужно теперь поставить 301 редирект на все страницы с > https, но оставить редирект на https в личный кабинет и на страницу оплаты, > с первой частью вопросов нет, но, вот, чтобы обе части выполняли условия не > получается, прошу помощи. > > > вот пациент > > server { > server_name example.ru www.example.ru; > listen 144.*.*.*; > listen 144.*.*.*:443 ssl; > disable_symlinks if_not_owner from=$root_path; > set $root_path /var/www/example/data/www/example.ru; > #rewrite ^(.*) https://$host$1 permanent; > if ( $scheme = "http" ) { > rewrite ^/(.*)$ https://$host/$1 permanent; > } Начать имеет смысл с простого: разделить http и https, описав их в разных блоках server{}. И соответственно перенаправления делать - в зависимости от выбранного server'а / location'а, а не играть в игры с проверкой переменных в рамках "единого" сервера: server { listen 443 ssl; server_name example.com; ... } server { listen 80; server_name example.com; return 301 https://$server_name$request_uri; } После этого большая часть проблем должна отпасть. -- Maxim Dounin http://nginx.org/ ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
Budulianin Wrote: --- > >Зачем вы выбрали такое значения Cache-Control: max-age=600 no-cache? > > Этой строчкой я хотел сказать браузеру: держи у себя кэш 600 секунд, > но при каждом запросе отправляй заголовки(видимо If-modified-since) > Потому что кэш nginx может обновиться раньше, чем пройдёт 600 секунд и > тогда браузер возьмёт свежий ответ. > > Неверно ? Нет не верно, параметр max-age указывает через какой временной интервал времени нужно проводить ревалидацию, no-cache тоже указывает этот интервал, он всегда равен нулю т.е по сути no-cache это синоним max-age=0. Браузеру ненужно говорить сколько времени хранить кеш, он его будет хранить столько сколько сможет по своим внутренним алгоритмам, кол-во свободного места на диске, частота обращения к сайту и т.д... Браузеру просто нужно сказать, когда проводить ревалидацию кеша, вот и все. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251795#msg-251795 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
>Зачем вы выбрали такое значения Cache-Control: max-age=600 no-cache? Этой строчкой я хотел сказать браузеру: держи у себя кэш 600 секунд, но при каждом запросе отправляй заголовки(видимо If-modified-since) Потому что кэш nginx может обновиться раньше, чем пройдёт 600 секунд и тогда браузер возьмёт свежий ответ. Неверно ? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251794#msg-251794 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Вопрос об управлении кэшем nginx.
Лучше управлять кешированием из приложения, это более правильное решения и более гибкое, таким образом приложения самостоятельно решает какой контент на какой период кешировать и эти же заголовки отправятся в браузер и тогда не надо будут костыли в виде ignore_headers и hide_header, потому что приложения отдает коректные заголовки для кеширования, самое главное что браузеры так же будут кешировать ваш ответ в своем кеше и если контент на сервере не поменялся, браузер будет использовать свой локал кеш, это очень хорошо для уменьшения трафика и увеличения скорости отдачи контента, самая высокая скорость это отдача контента из локал кеша браузера. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251781,251790#msg-251790 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
Да, директивы uwsgi_cache_valid для этого и придумали, чтобы управлять кешированием, если бекенд приложения не может самостоятельно отправить правильные заголовки. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251788#msg-251788 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Вопрос об управлении кэшем nginx.
А как, вообще, правильнее создавать кэш nginx ? Преимущественно на основе заголовков от приложения? Или подменивать заголовки на nginx ? Или всё зависит от задачи, но лучше стараться управлять из приложения? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251781,251786#msg-251786 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
>Видимо этими заголовками можно создать кэш nginx самостоятельно, те директивами Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251785#msg-251785 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
>если приложения не может отдавать правильные заголовки тогда вам нужно управлять кешированием через директивы в конфиге Nginx http://nginx.org/ru/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_valid вам наверно нужно так - uwsgi_cache_valid 200 10m; Видимо этими заголовками можно создать кэш nginx самостоятельно, без заголовков от проксируемого сервера. >Зачем вы выбрали такое значения Cache-Control: max-age=600 no-cache? 600 секунд хранить кэш, а no-cache, я так понял, заставляет отсылать заголовки на сервер, чтобы проверить свежесть. >во первых, нужна запятая между max-age=600 и no-cache Да, виноват. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251784#msg-251784 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Вопрос об управлении кэшем nginx.
Если так uwsgi_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie; uwsgi_hide_header Set-Cookie; uwsgi_cache_valid 200 10m; Тогда не важно какие заголовки отправил проксируемый сервер (бекенд), ответ будет закеширован на 10 минут, этим занимается директива http://nginx.org/ru/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_valid Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251781,251783#msg-251783 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
>Я хочу принять ответ от uwsgi, > добавить в него пару заголовков и отдать клиенту. > Фактически добавить заголовки в ответ nginx. > Я таким образом хочу управлять кэшем. Вы таким образом сможете управлять только кешем браузера, если хотите управлять кешем Nginx, нужно чтобы ваше приложения отдавала правильные значения в заголовках Expires или Cache-Control, если приложения не может отдавать правильные заголовки тогда вам нужно управлять кешированием через директивы в конфиге Nginx http://nginx.org/ru/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_valid вам наверно нужно так - uwsgi_cache_valid 200 10m; P.S. Зачем вы выбрали такое значения Cache-Control: max-age=600 no-cache? во первых, нужна запятая между max-age=600 и no-cache во вторых, max-age=600 и no-cache взаимоисключают дру-друга, max-age=600 говорит кешить на 10 минут, а no-cache говорит нельзя использовать кеш без ревалидации, т.е браузер это понимает как - max-age=0 Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251782#msg-251782 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Вопрос об управлении кэшем nginx.
Всем привет. Правильно ли я понимаю, что nginx может создать кэш, только на основании полученного ответа от проксируемого сервера? Т.е. прописаны все настройки для кэша(uwsgi_cache_path и прочее) Но nginx создаст кэш только, если будет соответствующий заголовок(Cache-Control, Expires) от проксируемого сервера. А создать кэш самостоятельно(без заголовков от прокс. сервера) он не может? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251781,251781#msg-251781 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
>Какой смысл добавлять заголовок в ответ uwsgi? Вероятно вы всё же хотите добавить заголовок в ответ nginx, тогда это делается с помощью add_header. Возможно я неправильно выразился. Я хочу принять ответ от uwsgi, добавить в него пару заголовков и отдать клиенту. Фактически добавить заголовки в ответ nginx. Я таким образом хочу управлять кэшем. Спасибо, сейчас попробую. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251776#msg-251776 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
On Tuesday 15 July 2014 05:10:10 Budulianin wrote: > proxy_set_header задаёт заголовки. > uwsgi_param задаёт параметры. И всё это передаётся на проксируемый сервер. > > есть ещё uwsgi_pass_header он разрешает передавать запрещённые заголовки от > uwsgi. > > Но я не вижу с помощью чего, можно добавить заголовки в ответ uwsgi. > Это возможно? > [..] Какой смысл добавлять заголовок в ответ uwsgi? Вероятно вы всё же хотите добавить заголовок в ответ nginx, тогда это делается с помощью add_header. http://nginx.org/r/add_header/ru -- Валентин Бартенев ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
proxy_set_header задаёт заголовки. uwsgi_param задаёт параметры. И всё это передаётся на проксируемый сервер. есть ещё uwsgi_pass_header он разрешает передавать запрещённые заголовки от uwsgi. Но я не вижу с помощью чего, можно добавить заголовки в ответ uwsgi. Это возможно? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251772#msg-251772 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
Разобрался. Нужно в каждой директиве прописывать заново include uwsgi_params; Если передаёшь свои параметры в ней. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251771#msg-251771 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
>Валентин Бартенев, Igor Sysoev Спасибо за ответы. А как правильно передать несоклько переменных в uwsgi ? До этого у меня передавалась стандартная переменная PATH_INFO, а теперь uwsgi говорит, что её нет. http { uwsgi_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=static_cache:10m inactive=10m max_size=500M; uwsgi_cache_use_stale error; include uwsgi_params; server { listen 6543; location / { uwsgi_pass unix:/tmp/test_cache_nginx.sock; uwsgi_cache static_cache; uwsgi_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie; uwsgi_hide_header Set-Cookie; uwsgi_param HTTP_CACHE_CONTROL "max-age=600 no-cache"; uwsgi_cache_key "$request_method$host$uri$is_args$args"; uwsgi_cache_lock on; } } } KeyError: 'PATH_INFO' Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251770#msg-251770 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Помогите с редиректом
Всем привет, очень нужна помощь, сайт был полностью на https, в связи с этим были характерные проблемы с поисковикми, не индексиравались картинки, нет favicon. Собственно, нужно теперь поставить 301 редирект на все страницы с https, но оставить редирект на https в личный кабинет и на страницу оплаты, с первой частью вопросов нет, но, вот, чтобы обе части выполняли условия не получается, прошу помощи. вот пациент server { server_name example.ru www.example.ru; listen 144.*.*.*; listen 144.*.*.*:443 ssl; disable_symlinks if_not_owner from=$root_path; set $root_path /var/www/example/data/www/example.ru; #rewrite ^(.*) https://$host$1 permanent; if ( $scheme = "http" ) { rewrite ^/(.*)$ https://$host/$1 permanent; } location ~* ^.+.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|woff)$ { root $root_path; expires 31d; access_log /var/www/nginx-logs/example isp; access_log /var/www/httpd-logs/example.ru.access.log ; error_page 404 = @fallback; } location / { proxy_pass http://144.*.*.*:81; proxy_redirect http://144.*.*.*:81/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; } location ~* ^/(webstat|awstats|webmail|myadmin|pgadmin)/ { proxy_pass http://144.*.*.*:81; proxy_redirect http://144.*.*.*:81/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; } location @fallback { proxy_pass http://144.*.*.*:81; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; } location ^~ /webstat/ { auth_basic "Restricted area"; auth_basic_user_file /var/www/example/data/etc/665870.passwd; try_files $uri @fallback; } include /usr/local/ispmgr/etc/nginx.inc; ssl_certificate /var/www/httpd-cert/example/ssl-example.crt; ssl_certificate_key /var/www/httpd-cert/example/ssl-example.key; #ssl_protocols SSLv3 TLSv1; #Disables all weak ciphers #ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM; ssl_ciphers RC4:HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; } Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251769,251769#msg-251769 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
On Tuesday 15 July 2014 04:23:53 Budulianin wrote: > http://stackoverflow.com/questions/14133460/how-to-read-uwsgi-parameters-in-python-flask-passed-from-nginx > Вот здесь говорят, что можно создать переменную, как uwsgi параметр и > пользоваться ей. > > А другого способа нет? Странно, что нет uwsgi_set_header. > Потому, что в самом протоколе нет такого понятия как "заголовок", а есть возможность только передавать параметры, и все http заголовки передаются как параметры с префиксом HTTP_. Если вы хотите эмулировать такой заголовок, то просто нужно указать: uwsgi_param HTTP_Header value; -- Валентин Бартенев ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
http://stackoverflow.com/questions/14133460/how-to-read-uwsgi-parameters-in-python-flask-passed-from-nginx Вот здесь говорят, что можно создать переменную, как uwsgi параметр и пользоваться ей. А другого способа нет? Странно, что нет uwsgi_set_header. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251764#msg-251764 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Нет uwsgi set header, чем заменить?
On 15 Jul 2014, at 12:18, Budulianin wrote: > Всем привет. > > Хочу задать заголовки. Но в доке не вижу uwsgi_set_header. > Как для uwsgi задать заголовки? http://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_param -- Igor Sysoev http://nginx.com ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Нет uwsgi set header, чем заменить?
Всем привет. Хочу задать заголовки. Но в доке не вижу uwsgi_set_header. Как для uwsgi задать заголовки? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251763#msg-251763 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru