Re: 301 редирект работает не всегда?
> а вы по логам видите только обращения к счетчикам, или 200 к старому > домену ? > По логам вижу только 301 редирект и редкие 400 и 408 ошибки ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: 301 редирект работает не всегда?
21 апреля 2017 г., 2:08 пользователь Андрей Василишиннаписал: > > > Если страница кэшируемая (например, без явного expires), то она может > > быть оставлена в одном из табов, тогда счётчик сработает при очередном > > запуске браузера без обращения к серверу. > > > > > просто странно, редирект со старого домена на новый был сделал уже пол > года назад, а на старом домене все равно умудряются загружать счетчики > а вы по логам видите только обращения к счетчикам, или 200 к старому домену ? > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: 301 редирект работает не всегда?
> Если страница кэшируемая (например, без явного expires), то она может > быть оставлена в одном из табов, тогда счётчик сработает при очередном > запуске браузера без обращения к серверу. > просто странно, редирект со старого домена на новый был сделал уже пол года назад, а на старом домене все равно умудряются загружать счетчики ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: 301 редирект работает не всегда?
20.04.2017 23:46, Gena Makhomed пишет: > On 20.04.2017 23:26, Андрей Василишин wrote: > >> rewrite ^(.*)$ http://site.to$request_uri permanent; > > Выделение ^(.*)$ лишнее, оно потом нигде не используется. > > Еще при такой директиве при редиректе будут дублироваться аргументы. > > Надо или добавлять ? после $request_uri или использовать return 301: > > rewrite ^ http://site.to$request_uri? permanent; > > return 301 http://site.to$request_uri; > > Последний вариант короче и предпочтительнее всего. > Спасибо за ликбез! ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: 301 редирект работает не всегда?
On Thu, Apr 20, 2017 at 11:26:20PM +0300, Андрей Василишин wrote: > Есть такая проблема, настроен 301 редирект с кучи доменов на основной, > конфиг ниже. Все работает, в логах помино 301 редкие 400 и 408 ответы, > но вот счетчик liveinternet, яндекс.вэбмастер все же показывает пару > десятков хостов, которые по идее должны были быть отредирекчены на > другой домен и их счетчики банально не должны были загрузится. > Кто виноват и что делать, есть у кого-нибудь идеи? Если страница кэшируемая (например, без явного expires), то она может быть оставлена в одном из табов, тогда счётчик сработает при очередном запуске браузера без обращения к серверу. -- Eugene Berdnikov ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: 301 редирект работает не всегда?
On 20.04.2017 23:26, Андрей Василишин wrote: rewrite ^(.*)$ http://site.to$request_uri permanent; Выделение ^(.*)$ лишнее, оно потом нигде не используется. Еще при такой директиве при редиректе будут дублироваться аргументы. Надо или добавлять ? после $request_uri или использовать return 301: rewrite ^ http://site.to$request_uri? permanent; return 301 http://site.to$request_uri; Последний вариант короче и предпочтительнее всего. -- Best regards, Gena ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Кто же сильнее Cache-Control или X-Accel-Expires?
Hello! On Thu, Apr 20, 2017 at 09:12:14PM +0300, Иван wrote: > Максим,спасибо за быстрый ответ! Может быть это указать в документации? Пока > что процитированная часть документации, как мне кажется, прямо противоречит > этому поведению. Скорее нет, чем да. Это поведение надо бы исправить так, чтобы в том числе в случае полного запрета кеширования приоритет заголовков работал корректно, и результат не зависел от порядка заголовков. (Just in case it is not clear, сейчас документация правильно описывает поведение в случае, если ни один из заголовков кеширование не запрещает совсем. Зависимость от порядка возникает тогда и только тогда, когда один из заголовоков кеширование полностью запрещает.) -- Maxim Dounin http://nginx.org/ ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Кто же сильнее Cache-Control или X-Accel-Expires?
Здравствуйте! Максим,спасибо за быстрый ответ! Может быть это указать в документации? Пока что процитированная часть документации, как мне кажется, прямо противоречит этому поведению. С уважением, Иван. В письме от 20 апреля 2017 21:08:33 пользователь Maxim Dounin написал: > Hello! > > On Thu, Apr 20, 2017 at 08:17:07PM +0300, Иван wrote: > > Здравствуйте! > > > > Есть конфиг бэкэнда, вот его кусочек: > > > > location ~ \.m3u8$ { > > expires -1; > > add_header "X-Accel-Expires" "100" > > } > > > > Как следует из русской и английской документации: > > http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_cache_valid > > (кстати, как делать красивые короткие ссылки на документацию, которыми > > оперирует в этом списке рассылки команда nginx?) > > > > > Если в заголовке нет поля “X-Accel-Expires”, параметры кэширования > > > определяются по полям заголовка “Expires” или “Cache-Control”. > > > > То есть можно предположить, что приоритет у X-Accel-Expires. > > Но нет. Как показывает моя практика и, например, этот вопрос: > > https://serverfault.com/questions/641367/nginx-using-x-accel-expires-with-> > > > cache-control > > > > Приоритет имеет Cache-control. То есть в такой конфигурации на фронтэнде: > > > > location ^~ /video/ { > > > > proxy_buffer_size 16k; > > proxy_buffers 32 16k; > > > > proxy_cache video; > > proxy_cache_lock on; > > > > proxy_cache_use_stale updating; > > proxy_cache_key "$proxy_host$uri"; > > > > proxy_pass http://backend; > > > > } > > > > m3u8 файлы, проходящие через этот локейшен на приведенный выше локейшен > > бэкэнда кешироваться не будут. Ситуацию спасает только > > proxy_ignore_headers Expires Cache-Control; > > > > Подскажите, пожалуйста, где ошибка: в nginx, документации или моём > > понимании того или другого? > > Текущая реализация такова, что если до заголовка X-Accel-Expires > встретится заголовок Cache-Control или Expires, запрещающий > кеширование совсем, то кеширование будет запрещено. > > То же самое с Cache-Control vs. Expires: в соответствии со > стандартом HTTP/1.1 заголовок Cache-Control имеет приоритет, но > если до него в ответе был заголовок Expires, полностью запрещающий > кеширование, то кеширование будет запрещено. ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Кто же сильнее Cache-Control или X-Accel-Expires?
Hello! On Thu, Apr 20, 2017 at 08:17:07PM +0300, Иван wrote: > Здравствуйте! > > Есть конфиг бэкэнда, вот его кусочек: > > location ~ \.m3u8$ { > expires -1; > add_header "X-Accel-Expires" "100" > } > > Как следует из русской и английской документации: > http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_cache_valid > (кстати, как делать красивые короткие ссылки на документацию, которыми > оперирует в этом списке рассылки команда nginx?) > > > Если в заголовке нет поля “X-Accel-Expires”, параметры кэширования > > определяются по полям заголовка “Expires” или “Cache-Control”. > > То есть можно предположить, что приоритет у X-Accel-Expires. > Но нет. Как показывает моя практика и, например, этот вопрос: > https://serverfault.com/questions/641367/nginx-using-x-accel-expires-with-cache-control > > Приоритет имеет Cache-control. То есть в такой конфигурации на фронтэнде: > > location ^~ /video/ { > proxy_buffer_size 16k; > proxy_buffers 32 16k; > > proxy_cache video; > proxy_cache_lock on; > > proxy_cache_use_stale updating; > proxy_cache_key "$proxy_host$uri"; > > proxy_pass http://backend; > } > > m3u8 файлы, проходящие через этот локейшен на приведенный выше локейшен > бэкэнда кешироваться не будут. Ситуацию спасает только > proxy_ignore_headers Expires Cache-Control; > > Подскажите, пожалуйста, где ошибка: в nginx, документации или моём понимании > того или другого? Текущая реализация такова, что если до заголовка X-Accel-Expires встретится заголовок Cache-Control или Expires, запрещающий кеширование совсем, то кеширование будет запрещено. То же самое с Cache-Control vs. Expires: в соответствии со стандартом HTTP/1.1 заголовок Cache-Control имеет приоритет, но если до него в ответе был заголовок Expires, полностью запрещающий кеширование, то кеширование будет запрещено. -- Maxim Dounin http://nginx.org/ ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Как правильно кешировать запросы от анонимов?
Здравствуйте! Достаточно популярная, как мне кажется, проблема. Хочу кешировать запросы к какому-то локейшену, например, к / , но только от анонимных пользователей. То есть тех, у которых еще нет для нас никаких кук. Как это правильно сделать в условиях бэкэнда, который, как, например, извините за выражение, битрикс, ставит куку типа PHP_SESSID при любом запросе? То есть по факту мой вопрос сводится к тому, как выполнять fastcgi_ignore_headers Set-Cookie; или не выполнять в зависимости от каких-то условий, например, от наличия уже поставленных пользователю кук. Пока я создал вот такого монстра (он работает, но мне не нравится): map $http_cookie $main_cache { default 0; "" 1; } location = / { if ($main_cache) { rewrite ^ /_main_cache/ last; } fastcgi_pass unix:/run/php-fpm.socket; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root/index.php; fastcgi_param HTTP_GEOCOUNTRY $geoip_country_code; } location = /_main_cache/ { internal; #Это чтоб в бэкэнд везде приходил правильный адрес, никто не должен знать про _main_cache rewrite ^ / break; fastcgi_cache main; fastcgi_hide_header "Set-Cookie"; fastcgi_ignore_headers "Cache-Control" "Expires" "Set-Cookie"; fastcgi_cache_valid 200 10s; fastcgi_cache_key "/"; fastcgi_cache_use_stale updating; fastcgi_cache_lock on; #Аноним после первого посещения не аноним, а так как мы игнорируем Set-Cookie ставим средствами nginx. add_header "Set-Cookie" "visited=1; path=/"; fastcgi_pass unix:/run/php-fpm.socket; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root/index.php; fastcgi_param HTTP_GEOCOUNTRY $geoip_country_code; } Можно как-то изящнее и феншуйнее? Пожалуйста, не предлагайте переделывать бэкэнд. Это нереально. С уважением, Иван. ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Кто же сильнее Cache-Control или X-Accel-Expires?
Здравствуйте! Есть конфиг бэкэнда, вот его кусочек: location ~ \.m3u8$ { expires -1; add_header "X-Accel-Expires" "100" } Как следует из русской и английской документации: http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_cache_valid (кстати, как делать красивые короткие ссылки на документацию, которыми оперирует в этом списке рассылки команда nginx?) > Если в заголовке нет поля “X-Accel-Expires”, параметры кэширования > определяются по полям заголовка “Expires” или “Cache-Control”. То есть можно предположить, что приоритет у X-Accel-Expires. Но нет. Как показывает моя практика и, например, этот вопрос: https://serverfault.com/questions/641367/nginx-using-x-accel-expires-with-cache-control Приоритет имеет Cache-control. То есть в такой конфигурации на фронтэнде: location ^~ /video/ { proxy_buffer_size 16k; proxy_buffers 32 16k; proxy_cache video; proxy_cache_lock on; proxy_cache_use_stale updating; proxy_cache_key "$proxy_host$uri"; proxy_pass http://backend; } m3u8 файлы, проходящие через этот локейшен на приведенный выше локейшен бэкэнда кешироваться не будут. Ситуацию спасает только proxy_ignore_headers Expires Cache-Control; Подскажите, пожалуйста, где ошибка: в nginx, документации или моём понимании того или другого? С уважением, Иван. ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru