Re: Cache revalidation using If-None-Match

2014-07-15 Пенетрантность S.A.N
Наверно стоит объяснить почему логику кеширования мы вынесли на бекенд и
минимально используем конфиг 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

2014-07-15 Пенетрантность S.A.N
> Если я правильно понял этот поток текста, то на выходе вы хотите 
> получить что-то вроде "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

2014-07-15 Пенетрантность Maxim Dounin
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: Помогите с редиректом

2014-07-15 Пенетрантность luckysrg
Подскажите можно ли в 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.

2014-07-15 Пенетрантность Maxim Dounin
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, чем заменить?

2014-07-15 Пенетрантность S.A.N
> >Но все эти детали лучше не говорить тем кто только начинает изучать
> механизмы кеширования в 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, чем заменить?

2014-07-15 Пенетрантность Budulianin
>Но все эти детали лучше не говорить тем кто только начинает изучать
механизмы кеширования в 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.

2014-07-15 Пенетрантность Budulianin
Правильно ли я понимаю, что 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, чем заменить?

2014-07-15 Пенетрантность S.A.N
> "логика кеширования в 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, чем заменить?

2014-07-15 Пенетрантность Gena Makhomed

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, чем заменить?

2014-07-15 Пенетрантность Budulianin
>в общем это хороший стиль 
Ну сейчас все стараются следовать 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, чем заменить?

2014-07-15 Пенетрантность S.A.N
> >С этого и надо было начинать, они нужны обязательно если вы хотите
> клиенту отдавать 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, чем заменить?

2014-07-15 Пенетрантность S.A.N
> >Я имел виду, ревалидация В приложении это - 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, чем заменить?

2014-07-15 Пенетрантность Budulianin
>С этого и надо было начинать, они нужны обязательно если вы хотите клиенту
отдавать 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, чем заменить?

2014-07-15 Пенетрантность Budulianin
>Я имел виду, ревалидация В приложении это - 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, чем заменить?

2014-07-15 Пенетрантность S.A.N
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, чем заменить?

2014-07-15 Пенетрантность Budulianin
>Это понятно, ревалидировать кеш на в приложении - это стиль 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: Помогите с редиректом

2014-07-15 Пенетрантность luckysrg
Огромное спасибо, 
Это именно то, что мне было нужно !!!

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, чем заменить?

2014-07-15 Пенетрантность S.A.N
> >те кто обновляет страницу в ручную будут получать 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, чем заменить?

2014-07-15 Пенетрантность S.A.N
> Значит моя схема вполне жизнеспособна и не выглядит нормально? Кладём
> основную нагрузку на 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, чем заменить?

2014-07-15 Пенетрантность Budulianin
>те кто обновляет страницу в ручную будут получать 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, чем заменить?

2014-07-15 Пенетрантность S.A.N
> Я нажимал не 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, чем заменить?

2014-07-15 Пенетрантность Budulianin
>Если у вас есть сторонний процесс который чистит кеш, тогда конечно можно
использовать эту схему.

Можно по разному чистить кэш, даже руками) Главное сам факт, того что мы
можем в любой момент всё у всех актуализировать.
Значит моя схема вполне жизнеспособна и не выглядит нормально? Кладём
основную нагрузку на 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: Помогите с редиректом

2014-07-15 Пенетрантность Maxim Dounin
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, чем заменить?

2014-07-15 Пенетрантность Budulianin
> браузер не будет делать запросы к статике

Это 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, чем заменить?

2014-07-15 Пенетрантность S.A.N
> >Эта схема защитит ваше приложения от нагрузки, но она никак не сможет
> актуализировать кеш быстрей чем это указанно в 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, чем заменить?

2014-07-15 Пенетрантность S.A.N
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, чем заменить?

2014-07-15 Пенетрантность Budulianin
>Лично я разработчик а не администратор, ...
...
там и зарплаты другие и задачи интересней )

Такие решения не от меня зависят, я лишь могу предложить.

>Эта схема защитит ваше приложения от нагрузки, но она никак не сможет
актуализировать кеш быстрей чем это указанно в 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, чем заменить?

2014-07-15 Пенетрантность Budulianin
>Нет, на протяжении 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, чем заменить?

2014-07-15 Пенетрантность S.A.N
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, чем заменить?

2014-07-15 Пенетрантность Budulianin
>В этом случаи приложения должно уметь очень быстро проверять
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, чем заменить?

2014-07-15 Пенетрантность S.A.N
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: Помогите с редиректом

2014-07-15 Пенетрантность luckysrg
Спасибо за совет, но все равно остался вопрос как из секции 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, чем заменить?

2014-07-15 Пенетрантность Budulianin
Большое спасибо за ответ, теперь понял.

А если браузер присылает в запросе 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, чем заменить?

2014-07-15 Пенетрантность S.A.N
Нет, на протяжении 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, чем заменить?

2014-07-15 Пенетрантность Budulianin
>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: Помогите с редиректом

2014-07-15 Пенетрантность Maxim Dounin
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, чем заменить?

2014-07-15 Пенетрантность S.A.N
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, чем заменить?

2014-07-15 Пенетрантность Budulianin
>Зачем вы выбрали такое значения 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.

2014-07-15 Пенетрантность S.A.N
Лучше управлять кешированием из приложения, это более правильное решения и
более гибкое, таким образом приложения самостоятельно решает какой контент
на какой период кешировать и эти же заголовки отправятся в браузер и тогда
не надо будут костыли в виде 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, чем заменить?

2014-07-15 Пенетрантность S.A.N
Да, директивы 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.

2014-07-15 Пенетрантность Budulianin
А как, вообще, правильнее создавать кэш 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, чем заменить?

2014-07-15 Пенетрантность Budulianin
>Видимо этими заголовками можно создать кэш 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, чем заменить?

2014-07-15 Пенетрантность Budulianin
>если приложения не может отдавать правильные заголовки тогда вам нужно
управлять кешированием через директивы в конфиге 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.

2014-07-15 Пенетрантность S.A.N
Если так

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, чем заменить?

2014-07-15 Пенетрантность S.A.N
>Я хочу принять ответ от 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.

2014-07-15 Пенетрантность Budulianin
Всем привет.

Правильно ли я понимаю, что 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, чем заменить?

2014-07-15 Пенетрантность Budulianin
>Какой смысл добавлять заголовок в ответ 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, чем заменить?

2014-07-15 Пенетрантность Валентин Бартенев
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, чем заменить?

2014-07-15 Пенетрантность Budulianin
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, чем заменить?

2014-07-15 Пенетрантность Budulianin
Разобрался.

Нужно в каждой директиве прописывать заново 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, чем заменить?

2014-07-15 Пенетрантность Budulianin
>Валентин Бартенев, 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

Помогите с редиректом

2014-07-15 Пенетрантность luckysrg
Всем привет, очень нужна помощь, сайт был полностью на 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, чем заменить?

2014-07-15 Пенетрантность Валентин Бартенев
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, чем заменить?

2014-07-15 Пенетрантность Budulianin
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, чем заменить?

2014-07-15 Пенетрантность Igor Sysoev
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, чем заменить?

2014-07-15 Пенетрантность Budulianin
Всем привет.

Хочу задать заголовки. Но в доке не вижу 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