<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Юрий,<br>
      <br>
      Если нужно заместить элемент, то даже отдельный location не
      потребуется:<br>
      geo $bypass {<br>
          192.168.0.0/24 1;<br>
          default 0;<br>
      }<br>
      <br>
      И потом:<br>
      <br>
      location / {<br>
          proxy_cache zone1;<br>
          proxy_pass $upstream;<br>
          proxy_cache_bypass $bypass;<br>
      }<br>
      <br>
      В таком варианте, при обращении из 192.168.0.0/24 обращение в
      upstream будет мимо кэша. Но при этом, контент будет обновлён, 
      если ответ в принципе может быть кэширован.<br>
      <br>
      Добавить в условие заголовки так же несложно. А вот аутентификация
      потребует дополнительных усилий.<br>
      <br>
      Так же можно сделать отдельный server{}, в котором использовать ту
      же зону, с теми же location'ами и задать там любые правила
      доступа.<br>
      <br>
      On 01.08.2018 16:48, Yury Lyakh wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:99393615-020E-4490-97EA-BA27D0770EDF@ya.ru">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      Звучит как-то необычно, есть пример рабочего конфига? хотя бы
      этого самого специального локейшна?…
      <div class="">что-то не придумывается конфиг который позволит
        внутри nginx принудительно обновить элемент в кеше<br class="">
        <div><br class="">
          <blockquote type="cite" class="">
            <div class="">On 31 Jul 2018, at 13:54, Igor A. Ippolitov
              <<a href="mailto:iippolitov@nginx.com" class=""
                moz-do-not-send="true">iippolitov@nginx.com</a>>
              wrote:</div>
            <br class="Apple-interchange-newline">
            <div class=""><span style="caret-color: rgb(0, 0, 0);
                font-family: Helvetica; font-size: 12px; font-style:
                normal; font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none; float: none; display: inline
                !important;" class="">On 31.07.2018 00:24,<span
                  class="Apple-converted-space"> </span></span><a
                href="mailto:jd@jdwuzhere.ru" style="font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; orphans: auto; text-align:
                start; text-indent: 0px; text-transform: none;
                white-space: normal; widows: auto; word-spacing: 0px;
                -webkit-text-size-adjust: auto;
                -webkit-text-stroke-width: 0px;" class=""
                moz-do-not-send="true">jd@jdwuzhere.ru</a><span
                style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none; float: none; display: inline
                !important;" class=""><span
                  class="Apple-converted-space"> </span>wrote:</span><br
                style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <blockquote type="cite" style="font-family: Helvetica;
                font-size: 12px; font-style: normal; font-variant-caps:
                normal; font-weight: normal; letter-spacing: normal;
                orphans: auto; text-align: start; text-indent: 0px;
                text-transform: none; white-space: normal; widows: auto;
                word-spacing: 0px; -webkit-text-size-adjust: auto;
                -webkit-text-stroke-width: 0px; text-decoration: none;"
                class=""><br class="">
                <blockquote type="cite" class="">On 30 Jul 2018, at
                  19:59, Igor A. Ippolitov <<a
                    href="mailto:iippolitov@nginx.com" class=""
                    moz-do-not-send="true">iippolitov@nginx.com</a>>
                  wrote:<br class="">
                  <br class="">
                  <blockquote type="cite" class="">On 30.07.2018 14:29,
                    Gena Makhomed wrote:<br class="">
                    <blockquote type="cite" class="">On 30.07.2018
                      14:06, Igor A. Ippolitov wrote:<br class="">
                      <br class="">
                      Мне кажется, что proxy_cache_bypass легко
                      позволяет замещать контент в кэше (что и делает
                      purge, в широком смысле).<br class="">
                    </blockquote>
                    Замещать существующий контент или добавлять новый -
                    да.<br class="">
                    Но удалять не позволяет, в этом и состоит
                    (небольшое) отличие.<br class="">
                  </blockquote>
                  Но ведь какой-то ответ на запрос "пурженного" контента
                  всё равно придёт клиенту? Почему бы не закэшить сразу
                  его.<br class="">
                  Или условную болванку с max-age:0, которая будет
                  обновлена по первому же запросу от клиента<br class="">
                </blockquote>
                Погодите, я что-то потерялся. Есть профиль игрока,
                который не меняется неделями. Nginx всю неделю (TTL
                кэша) радостно отдаёт страницу профиля из этого кэша. Но
                однажды, игрок начинает играть в новое и профиль
                необходимо обновить. Как без purge сообщить nginx, что
                информация обновилась и надо сходить в backend за новой
                страницей, чтобы положить её в кэш до следующего
                прихода?<br class="">
              </blockquote>
              <span style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none; float: none; display: inline
                !important;" class="">Как бы вы делали PURGE для профиля
                игрока? URL профиля вы знаете.</span><br
                style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <br style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <span style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none; float: none; display: inline
                !important;" class="">Для PURGE вы бы "дёрнули" запрос,
                который удалит ненужный элемент и в следующий раз nginx
                перезапросит контент с апстрима.</span><br
                style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <span style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none; float: none; display: inline
                !important;" class="">Этот запрос, обычно, приходит в
                отдельный location с нужными настройками: ключ кэша,
                права доступа, всякое такое.</span><br
                style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <br style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <span style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none; float: none; display: inline
                !important;" class="">В моём подходе вы "дёргаете" такой
                же запрос в специальный location, который ходит в
                апстрим мимо кэша (proxy_cache_bypass).</span><br
                style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <span style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none; float: none; display: inline
                !important;" class="">В разных вариациях, апстримом
                будет:</span><br style="caret-color: rgb(0, 0, 0);
                font-family: Helvetica; font-size: 12px; font-style:
                normal; font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <span style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none; float: none; display: inline
                !important;" class="">    либо сам nginx, который отдаёт
                HTTP 200 и Cache-Control: max-age=0;</span><br
                style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <span style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none; float: none; display: inline
                !important;" class="">    либо реальный апстрим, который
                отдаст актуальную копию данных</span><br
                style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <br style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <span style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none; float: none; display: inline
                !important;" class="">В первом случае контент сразу
                "протухает" и его актуализируют на первом же запросе.</span><br
                style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <span style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none; float: none; display: inline
                !important;" class="">Во-втором - сразу актуальный.</span><br
                style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <br style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <span style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none; float: none; display: inline
                !important;" class="">В следущий раз, когда запросят
                профиль пользователя, nginx либо пойдёт в апстрим, либо
                отдаст актуальную кэшированную версию.</span><br
                style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <br style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <blockquote type="cite" style="font-family: Helvetica;
                font-size: 12px; font-style: normal; font-variant-caps:
                normal; font-weight: normal; letter-spacing: normal;
                orphans: auto; text-align: start; text-indent: 0px;
                text-transform: none; white-space: normal; widows: auto;
                word-spacing: 0px; -webkit-text-size-adjust: auto;
                -webkit-text-stroke-width: 0px; text-decoration: none;"
                class=""><br class="">
                <blockquote type="cite" class="">На первый взгляд, PURGE
                  не кажется необходимым средством. Хотя, вероятно.
                  может упростить жизнь в каких-то конфигурациях.<br
                    class="">
                  <blockquote type="cite" class="">Вот поэтому и не
                    понятно, почему нельзя сделать директиву<br class="">
                    proxy_cache_purge доступной в open source версии
                    nginx?<br class="">
                    <br class="">
                    Могу ошибаться, но коммерческую версию nginx
                    покупают скорее всего<br class="">
                    не из-за директивы proxy_cache_purge, а ради других
                    возможностей.<br class="">
                    <br class="">
                    <blockquote type="cite" class="">
                      <blockquote type="cite" class="">
                        <blockquote type="cite" class="">Если не
                          прояснится - попробовать воспроизвести как
                          минимум без<br class="">
                          "--add-module=../ngx_cache_purge-2.3" (не
                          понимаю, как люди<br class="">
                          отваживаются использовать эту поделку, она при
                          любых внутренних<br class="">
                          изменениях в nginx'е разносит всё же)<br
                            class="">
                        </blockquote>
                        Если не использовать этот кривой сторонний
                        модуль ngx_cache_purge,<br class="">
                        то какие у пользователей open source версии
                        nginx есть альтернативы?<br class="">
                        Директиву proxy_cache_purge<br class="">
                        можете сделать доступной в open source версии
                        nginx?<br class="">
                      </blockquote>
                    </blockquote>
                    P.S.<br class="">
                    <br class="">
                    Please do not top-post.<br class="">
                    <br class="">
                    Answer: Because it turns the discussion
                    up-side-down.<br class="">
                    <br class="">
                    Question: Why should I not top-post?<br class="">
                    <br class="">
                  </blockquote>
                  _______________________________________________<br
                    class="">
                  nginx-ru mailing list<br class="">
                  <a href="mailto:nginx-ru@nginx.org" class=""
                    moz-do-not-send="true">nginx-ru@nginx.org</a><br
                    class="">
                  <a class="moz-txt-link-freetext" href="http://mailman.nginx.org/mailman/listinfo/nginx-ru">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br
                    class="">
                </blockquote>
                _______________________________________________<br
                  class="">
                nginx-ru mailing list<br class="">
                <a href="mailto:nginx-ru@nginx.org" class=""
                  moz-do-not-send="true">nginx-ru@nginx.org</a><br
                  class="">
                <a class="moz-txt-link-freetext" href="http://mailman.nginx.org/mailman/listinfo/nginx-ru">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br
                  class="">
              </blockquote>
              <br style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <br style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <span style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none; float: none; display: inline
                !important;" class="">_______________________________________________</span><br
                style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <span style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none; float: none; display: inline
                !important;" class="">nginx-ru mailing list</span><br
                style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <a href="mailto:nginx-ru@nginx.org" style="font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; orphans: auto; text-align:
                start; text-indent: 0px; text-transform: none;
                white-space: normal; widows: auto; word-spacing: 0px;
                -webkit-text-size-adjust: auto;
                -webkit-text-stroke-width: 0px;" class=""
                moz-do-not-send="true">nginx-ru@nginx.org</a><br
                style="caret-color: rgb(0, 0, 0); font-family:
                Helvetica; font-size: 12px; font-style: normal;
                font-variant-caps: normal; font-weight: normal;
                letter-spacing: normal; text-align: start; text-indent:
                0px; text-transform: none; white-space: normal;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;
                text-decoration: none;" class="">
              <a
                href="http://mailman.nginx.org/mailman/listinfo/nginx-ru"
                style="font-family: Helvetica; font-size: 12px;
                font-style: normal; font-variant-caps: normal;
                font-weight: normal; letter-spacing: normal; orphans:
                auto; text-align: start; text-indent: 0px;
                text-transform: none; white-space: normal; widows: auto;
                word-spacing: 0px; -webkit-text-size-adjust: auto;
                -webkit-text-stroke-width: 0px;" class=""
                moz-do-not-send="true">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></div>
          </blockquote>
        </div>
        <br class="">
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
nginx-ru mailing list
<a class="moz-txt-link-abbreviated" href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a>
<a class="moz-txt-link-freetext" href="http://mailman.nginx.org/mailman/listinfo/nginx-ru">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></pre>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>