> Убрать конфигурацию, которая прячет исходный заголовок
> Cache-Control (proxy_hide_header?) и добавляет вместо него
> "no-cache,no-store"?
>
> По умолчанию nginx отдаёт клиенту ровно тот заголовок
> Cache-Control, какой получил от бэкенда. Чтобы вернуть что-то
> другое - нужно это явно
Добрый день,
nginx используется как кеширующий реверс-прокси, апстрим с Апачем
выставляет заголовок:
Cache-Control: public, max-age=0, must-revalidate
Nginx руководствуется этим заголовком для того, чтобы определить каким
образом кешировать ответ апстрима, но посетителю Nginx отдаёт ответ с
Добрый день,
> У вас map выполняется в proxy_cache_bypass, то есть до отправки
> запроса на бэкенд, и запоминает результат (некорректный, так как
> он основан на ещё не полученных от бэкенда заголовках ответа).
Спасибо большое за быстрый ответ, - помогло!
Результирующая конфигурация для моих
Добрый день,
нужно избирательно кешировать ответы бэкэнда в nginx. Некоторые ответы
содержат Set-Cookie заголовки.По-умолчанию их кешировать не нужно, но
если встречается определённая куки, то такой ответ нужно кешировать.
пример:
кешируем ответ с заголовком:
Set-Cookie: pll_language=en;
> Скрипт сайта, в ответ на запрос с заголовком
> "If-Modified-Since" отдает Nginx-су заголовок "Content-Length 0" и не
> нулевые данные. Скрипт делает все верно
почему верно? в RFC 2616 написано, что:
14.13 Content-Length
The Content-Length entity-header field indicates the size of the
Добрый день,
> Кроме того, соединение не будет закрыто, если используется
> кэширование или fastcgi_store, так как в этих случаях ответ
> бэкенда полезен вне зависимости от того, будет ли он отправлен
> конкретному клиенту.
вот это уточнение прямо очень интересное, спасибо за него, Максим!
Добрый вечер,
> *) Добавление: параметр "delay" директивы "limit_req".
>Спасибо Владиславу Шабанову и Петру Щучкину.
прочитал документацию несколько раз, но мне кажется я так и не понял
как именно работает delay:
> Если же избыточные запросы в пределах лимита всплесков
> задерживать
добрый вечер,
> Поскольку сайт работает через chroot, то его sendmail лежит здесь
> /home/rima/www/usr/sbin/
> Даже через него напрямую из консоли ./sendmail можно спокойно отправить
> тестовое письмо, но из самого php скрипта не не удается. Всему каталогу с
> сайтом, директориями и файлам заданы
Добрый день,
нужно посчитать количество запросов для каждого IP адреса. сейчас мы
это делаем логгируя в файл IP адрес клиента для каждого запроса и
потом считая уникальные вхождения, но это какой-то странный способ
получения этой метрики.
возможно ли использовать nginScript для этой цели создав
Добрый день,
читайте этот тред:
http://mailman.nginx.org/pipermail/nginx-ru/2017-November/060604.html
https://forum.nginx.org/read.php?21,277438
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
> Вот налетело пользователей 2.5 к чего то делают там на сайте.
> Все работает проблемм нет. При этом nginx в top на первых местах по
> нагрузке, за ним php-fpm, это при том, что сайт на скрипте.
> Как понять, почему nginx грузит проц, чем он занят ? Ведь основная логика на
> php, он и должен
Добрый день,
> Валентин Бартенев, несомненно всё так. Вы правы во всём, но мы же говорим не
> о продакшене. а о разработчиках
> Многим просто удобно работать на Windows.
а WSL не решит Ваших проблем?
https://msdn.microsoft.com/en-us/commandline/wsl/about
а, кажется разобрался. так работает:
location = /test.php {
auth_request /is_proxy.php;
fastcgi_pass fcgi_pool;
}
location = /is_proxy.php {
fastcgi_pass_request_body off;
fastcgi_intercept_errors off;
fastcgi_pass fcgi_pool;
}
cat
> Да модуль версия зависим
это понятно. но планируется ли (и возможно ли) сделать такую
архитектуру подключения модулей, которая бы обеспечила возможность
собрать один раз модуль как dll для программы под windows, а затем
обновлять только по мере необходимости, а не при каждом выходе новой
версии
> [..]
> Если поступающих соединений очень много, то второй вариант работы может
> оказаться чуть оптимальнее, за счет того, что рабочий процесс для получения
> каждого соединение не ходит за событием в ядро.
> [..]
теперь понятно!
Валентин, большое спасибо за подробное разъяснение
> Если директива выключена , то есть установлено
> значение off, то один процесс будет принимать одно соединение.
> Если вы включаете multi accept, nginx попытается обработать максимальное
> количество входящий соединений. Если значение worker_connections мало то
> быстро исчерпается лимит.
а
Добрый вечер,
подскажите пожалуйста, в каких случаях нужно включать multi_accept on
и как именно он работает?
документацию читал http://nginx.org/r/multi_accept/ru
из того, что мне удалось нагуглить, ничто не проясняет ситуацию для меня:
> Вы изначально в ответе отдавали заголовки валидаторы (ETag и/ил
> Last-Modified)?
> Посмотрите на содержимое в папке кеша Nginx, есть ли там заголовки ETag и/ил
> Last-Modified, без них ревалидация кеша невозможно.
да, спасибо огромное дело оказалось именно в этом! заголовки-то мы
отдавали, и у
>> 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;
>
> У вас в конфиге написано: установить заголовки If-None-Match и
> If-Modified-Since в запросах к бекенду в полученные от клиента
>
Добрый день,
пытаюсь настроить ревалидацию страниц сайта в кеше директивой
fastcgi_cache_revalidate on;
ожидаю, что если элемент кеша устарел, то nginx сам сделает запрос к
бекэнду с заголовком If-Modified-Since (как это описано тут
http://whitequark.org/blog/2014/04/05/page-caching-with-nginx/
Добрый день,
попробуйте так:
location = /js/data/city_base.js {
include /etc/nginx/am_proxy.conf;
}
подробнее: http://nginx.org/ru/docs/http/request_processing.html
___
nginx-ru mailing list
nginx-ru@nginx.org
Есть url domain.ru/sub/ нужно сделать так чтобы при переходе на
domain.ru/sub/sub1 открывался domain.ru/sub
Сделал так но ни чего не получается
location ^/sub/* { rewrite ^/sub/(.*)$ /sub/ break; }
Подскажите пожалуйста как грамотно сделать location и rewrite
location ~* ^/sub/(.*)$ {
Добрый день,
есть старый, но довольно большой https legacy-сайт на php и у
владельцев нет ресурсов его переделывать. сайт состоит из нескольких
миллионов страниц в районе 60 кб каждая (14 кб после gzip на nginx).
основной трафик на сайт - поисковый по низкочастотным запросам и если
распарсить
Можно ли задавать разные настройки php для разных location но с одним пулом?
если это настройки php.ini, то можно так
fastcgi_param PHP_VALUE sessions.save_path=/home/www/sessions/
fastcgi_param PHP_ADMIN_VALUE open_basedir=/home/www/docs
___
nginx-ru
конфиг:
server {
listen 80;
server_nametest.com;
error_log /home/user/logs/test.com.error.log error;
access_log /home/user/logs/test.com.access.log wtimes buffer=16k flush=1m;
root /www/user/domains/test.com/public_html/;
set $sock
прошу прощения за допущенные в предыдущем письме неточности
проверяем через print_r(ini_get_all(null, false));
делаем запрос к http://test.com - показывает [memory_limit] = 512M
делаем запрос к http://test.com/z.php - показывает [memory_limit] = 64M
конечно же, наоборот:
делаем запрос к
А можете подсказать как это реализовать?
а Вы не могли бы ещё раз подробно рассказать как сейчас у Вас всё
настроено и как оно работает?
чтобы лучше понять проблему, я поднял тестовые конфигурации вида:
srv1:443 - он перенаправляет только специальный ури на http с кодом 301
server {
если же по Вашему сценарию srv2 это https сайт и ссылка, по которой
кликает клиент находится по ури https://srv2/test.html , то тогда
реферер не будет передаваться.
чтобы такое поведение изменить можно в локейшне с редиректом заново
переопределить этот заголовок, например так:
location = /x.php
На этих uri нельзя использовать небезопасное соединение. :(
я не предлагаю Вам использовать небезопасное соединение на этих uri, я
предлагаю Вам изменить политику передачи реферера браузером при
переходе с ресурса, доступного по протоколу https на протокол http,
путём добавления специального тега
добрый день,
Сайт имеет две версии http и https.
https используется только для определенных uri, с которых запросы
редиректятся на http.
Соответственно на http не поступает оригинальный реферер (тот который
приходит на https).
Нужно его как-то получать в http запросах уже после редиректа.
Половина попыток подключиться будет обламываться по таймауту.
в итоге клиенты будут не довольны ?
да. я уже много лет с нетерпением жду того момента, когда браузеры
научатся понимать SRV записи типа а они имеют вид:
_service._proto.name. TTL class SRV priority weight port target.
т.е.
Нет. При кешировании заголовки If-Modified-Since и If-None-Match
на бекенд не передаются (за исключением ревалидации кеша самим
nginx'ом), так что в ключе их указывать бессмысленно и может
принести лишь проблемы.
спасибо!
Если нужна обработка одним и тем же index.php, то в нужных
Лучше ещё переделать конфиг так, чтобы fastcgi_cache был включён
только там, где используется.
Ибо если кеш выключен - это одно, а если он включён, но ему
сказали bypass / no cache - это немного другое. В частности, при
обработке HEAD-запросов, а равно условных запросов будут различия
(при
удалить элемент из кеша можно директивой
http://nginx.org/r/proxy_cache_bypass/ru по ключу (т.е. новый элемент
возмётся не из кеша, но закешируется)
нет это совсем не то что в фичареквесте.
...
я хочу получить механизм внутри обработчика сбросить кеш на другом
роуте.
как вариант - выдать
chroot = /home/kursk.dyndns.org/www
..
Если разместить в /home/kursk.dyndns.org/www/ файл index.php со строчкой
phpinfo();
то всё прекрасно открывается. Но если залить тот же phpBB3, то всё время
наблюдается белая страница (в php.ini прописан параметр display_errors=1).
Если chroot убрать,
Что то вроде
server_name www.*
#тут редирект на домен без www
В голову приходит только пропустить $host через регулярку.
у меня для этих целей есть отдельный блок server:
server {
# редирект на основной домен (он без www) для всех сайтов.
#
Добрый день.
Подскажите как грамотнее написать конфиг для сайта, который использует
фреймворк и несколько отдельно лежащих php сценариев.
иерархия примерно такая:
/application/
/system/
/modules/
/static/
/upload/
/customphp1/
/customphp2/
..
/customphp30/
index.php
где customphp - папка с
37 matches
Mail list logo