<div dir="ltr"><img width="0" height="0" class="mailtrack-img" alt="" style="display:flex" src="https://mailtrack.io/trace/mail/c95a14c3dfd0195cb411e7f6d202ab7af33d1c3b.png?u=74734"><div></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;color:#000000"><br clear="all"></div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif">Thank you so much for this Peter. Very helpful. <span></span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif"><span> </span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif">For what it’s worth, I run a static wordpress website. So the configuration should not be very complicated. <span></span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif"><span> </span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif">The link that you provided also led me to <a href="https://mailtrack.io/trace/link/7155b729fa7169e53929c22c9c7a4e8e270c80ae?url=https%3A%2F%2Fgithub.com%2Fperusio%2Fwordpress-nginx&userId=74734&signature=0f3ba7c5b91784ea" style="color:rgb(5,99,193);text-decoration:underline">https://github.com/perusio/wordpress-nginx</a> <span></span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif"><span> </span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif">To answer your queries: <span></span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif"><span> </span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif">>1. Is this a website that's on the internet, and thus exposed to random queries from bots and scrapers that you can’t control?<span></span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif">Yes and a lot of scammy attacks typical to all wordpress websites. I’ve enabled connection limiting and request limiting of wordpress along with fail2ban on the request limiting rule.<span></span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif"><span> </span><span></span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif">> 2. For your cache misses, how long best case, typical and worse case does your back-end take to build the pages?<span></span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif">I run a warmer script and I expect all the pages to stay there 120 days. This is run every week and takes 1 hour. <span></span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif"><span> </span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif">4. Instead of $request_uri what’s the right variable that excludes all parameters? Is it $uri? <span></span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif"><span> </span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif">> 9. script is very useful to track the health of your cache:<span></span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif">Thank you for this. <span></span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif"><span> </span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif">Based on your response my suspicion is that url params might be the culprit here. But I wish there was a way to diagnostically get to the root cause. Do you know of any param/variable I can log to access log for this? <span></span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif"><span> </span></p>
<p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif">- Quintin <span></span></p>
<br></div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr">On Mon, May 14, 2018 at 11:08 AM Peter Booth <<a href="mailto:peter_booth@me.com">peter_booth@me.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space"><br><div>Quintin,</div><div><br></div><div>I dont know anything about your context, but your setup looks over simplistic. Here are some things that I learned </div><div>painfully over a few years of supporting a high traffic retail website</div><div><br></div><div>1. Is this a website that's on the internet, and thus exposed to random queries from bots and scrapers that you can’t control?</div><div><br></div><div>2. For your cache misses, how long best case, typical and worse case does your back-end take to build the pages?</div><div><br></div><div>3. You need to log everything that could feasibly affect the status of the site. For example, here’s a log config urationfrom one gnarly site that I worked on:</div><div><div><br></div><div> <font face="Consolas"> log_format main '$http_x_forwarded_for $http_true_client_ip $remote_addr - $remote_user [$time_local] $host "$request" '</font></div><div><font face="Consolas"> '$status $body_bytes_sent $upstream_cache_status $cookie_jsessionid $http_akamai_country $cookie_e4x_country $cookie_e4x_currency "$http_referer" '</font></div><div><font face="Consolas"> '"$http_user_agent" "$request_time”’;</font></div></div><div><br></div><div>4. the first problem is your cache key, and that it includes $request_uri which is the original uri</div><div><b> including all arguments. </b>So you are already exposed to DOS requests that could be unintentional,</div><div>as anyone can bust your cache by adding an extra parameter.</div><div><br></div><div><div dir="auto" style="word-wrap:break-word;line-break:after-white-space"><div><blockquote type="cite"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div id="m_-4352308354741881759m_-267008425796858038divtagdefaultwrapper" dir="ltr" style="font-size:12pt;font-family:Calibri,Helvetica,sans-serif"><div><div><div class="m_-4352308354741881759h5"><div><div dir="ltr"><div><div style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif"><span> </span>proxy_cache_key "$<a>scheme://$host$request_uri$</a>do_not_cache";</div></div></div></div></div></div></div></div></div></blockquote></div></div></blockquote></div><div><br></div><div>5. Not caching requests from logged in users is a very blunt tool. Is this a site where only administrative users are logged in?</div><div><br></div><div>Imagine a retail site that sells clothing. It’s possible that a dynamic page that lists all the red dresses is something </div><div>a logged in user sees. Perhaps the page can be cached ? But if there is a version of the page that shows 30 entries and other </div><div>that shows 60 then they need to disambiguated by the cache key. Perhaps users can choose to see prices in Euro instead of USD?</div><div>Then this also belongs in the key. If I am an American vacationing in Pari s then perhaps the default behavior should be to show me</div><div> Euro prices, based n the value of a cookie that the CDN sets. In the situation the customer may want to override this default behavior </div><div>and insist he sees USD prices. You can see how complex this can get. </div></div></div><div><br></div><div>7. The default behavior is to not cache responses that contain a set-cookie - imagine how cache pollution - sending someone another person’s personal data stored in a cookie could be much worse than a cache miss. But there are also settings where your backend is some legacy software that you dont control</div><div>and the correct behavior isn’t to not cache but instead to remove the set-cookie from the response and cache the response without it.</div><div><br></div><div>8 How you prime the cache , monitor the cache, and clear the cache are crucial . Perhaps you have a script that uses curl or wget to retrieve a series of pages from your site. If the script is written naively then each step might cause a new servlet session to be created on the backend producing a memory issue. </div><div><br></div><div>9. script is very useful to track the health of your cache:</div><div><br></div><div><a href="https://github.com/perusio/nginx-cache-inspector" target="_blank">https://github.com/perusio/nginx-cache-inspector</a></div><div><br></div><div>10. The if directive in nginx has some issues (see <a href="https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/" target="_blank">https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/</a> )</div><div>When I need to use complex configuration logic I use OpenResty. OpenResty is a bundle that </div><div>combines the standard nginx with some additional lua modules. It’s still standard nginx -</div><div> not forked or customized in any way.</div><div><br></div><div>11.</div><div><br></div><div>A very cut down version of a cache config for one page follows:</div><div><br></div><div><div><font face="Consolas"># Product arrays get cached</font></div><div><font face="Consolas"> location ~ /shop/ {</font></div><div><font face="Consolas"> rewrite "/(.*)/2];ord.*$" $1 ;</font></div><div><font face="Consolas"> proxy_no_cache $arg_mid $arg_siteID;</font></div><div><font face="Consolas"> proxy_cache_bypass $arg_mid $arg_siteID;</font></div><div><font face="Consolas"> proxy_cache_use_stale updating;</font></div><div><font face="Consolas"> default_type text/html;</font></div><div><font face="Consolas"> proxy_cache_valid 200 302 301 15m;</font></div><div><font face="Consolas"> proxy_ignore_headers Set-Cookie Cache-Control; </font></div><div><font face="Consolas"> proxy_pass_header off;</font></div><div><font face="Consolas"> proxy_hide_header Set-Cookie;</font></div><div><font face="Consolas"> expires 900s;</font></div><div><font face="Consolas"> add_header Last-Modified "";</font></div><div><font face="Consolas"> add_header ETag ""; </font></div><div><font face="Consolas"> # Build cache key </font></div><div><font face="Consolas"> set $e4x_currency $cookie_e4x_currency;</font></div><div><font face="Consolas"> set_if_empty $e4x_currency 'USD';</font></div><div><font face="Consolas"> set $num_items $cookie_EndecaNumberOfItems;</font></div><div><font face="Consolas"> set_if_empty $num_items 'LOW'; </font></div><div><font face="Consolas"> proxy_cache_key "$uri|$e4x_currency|$num_items";</font></div><div><font face="Consolas"> proxy_cache product_arrays; </font></div><div><font face="Consolas"> # Add Canonical URL string</font></div><div><font face="Consolas"> set $folder_id $arg_FOLDER%3C%3Efolder_id;</font></div><div><font face="Consolas"> set $canonical_url "<a href="http://$http_host$uri" target="_blank">http://$http_host$uri</a>";</font></div><div><font face="Consolas"> add_header Link "<$canonical_url>; rel=\"canonical\"";</font></div><div><font face="Consolas"> proxy_pass <a href="http://apache$request_uri" target="_blank">http://apache$request_uri</a>;</font></div><div><font face="Consolas"> }</font></div></div><div><font face="Consolas"><br></font></div><div><font face="Consolas"><br></font></div><div>Tis snippet shows a key made of three parts. The real version has seven parts.</div><div><font face="Consolas"><br></font></div><div><font face="Consolas">Goo</font>d luck!</div><div><br></div><div>Peter</div><div><br></div><div><br><blockquote type="cite"><div>On 14 May 2018, at 12:06 AM, Quintin Par <<a href="mailto:quintinpar@gmail.com" target="_blank">quintinpar@gmail.com</a>> wrote:</div><br class="m_-4352308354741881759Apple-interchange-newline"><div><div dir="ltr"><img width="0" height="0" class="m_-4352308354741881759mailtrack-img" alt="" style="display:flex" src="https://mailtrack.io/trace/mail/830e676b314f1b30986adfc1c7df5f967b9aa282.png?u=74734"><div><div style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif">Thanks all for the response. Michael, I am going to add those header ignores. <span></span></div><p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif"><span> </span></p><div style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif">Still puzzled by the large number of MISSEs and I’ve no clue why they are happening. Leads appreciated. <span></span></div><p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif"><span> </span></p><p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:12pt;font-family:Calibri,sans-serif"><span> </span></p>
</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div></div><div class="gmail_extra"><br clear="all"><div><div class="m_-4352308354741881759gmail_signature" data-smartmail="gmail_signature">- Quintin</div></div>
<br><div class="gmail_quote">On Sun, May 13, 2018 at 6:12 PM, c0nw0nk <span dir="ltr"><<a href="mailto:nginx-forum@forum.nginx.org" target="_blank">nginx-forum@forum.nginx.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">You know you can DoS sites with Cache MISS via switching up URL params and<br>
arguements.<br>
<br>
Examples :<br>
<br>
HIT :<br>
index.php?var1=one&var2=two<br>
MISS :<br>
index.php?var2=two&var1=one<br>
<br>
MISS :<br>
index.php?random=1<br>
index.php?random=2<br>
index.php?random=3<br>
etc etc<br>
<br>
Inserting random arguements to URL's will cause cache misses and changing<br>
the order of existing valid URL arguements will also cause misses.<br>
<br>
Cherian Thomas Wrote:<br>
-------------------------------------------------------<br>
<div><div class="m_-4352308354741881759h5">> Thanks for this Michael.<br>
> <br>
> <br>
> <br>
> This is so surprising. If someone decides to Dos and crawls the<br>
> website<br>
> with a rogue header, this will essentially bypass the cache and put a<br>
> strain on the website. In fact, I was hit by a dos attack that’s when<br>
> I<br>
> started looking at logs and realized the large number of MISSes.<br>
> <br>
> <br>
> <br>
> Can someone please help?<br>
> <br>
> <br>
><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div class="gmail_signature" data-smartmail="gmail_signature">- Quintin</div></div></div><br>
> <br>
> On Sat, May 12, 2018 at 12:01 PM, Friscia, Michael<br>
> <<a href="mailto:michael.friscia@yale.edu" target="_blank">michael.friscia@yale.edu</a><br>
> > wrote:<br>
> <br>
> > I'm not sure if this will help, but I ignore/hide a lot, this is in<br>
> my<br>
> > config<br>
> ><br>
> ><br>
> > proxy_ignore_headers X-Accel-Expires Expires Cache-Control<br>
> Set-Cookie;<br>
> > proxy_hide_header X-Accel-Expires;<br>
> > proxy_hide_header Pragma;<br>
> > proxy_hide_header Server;<br>
> > proxy_hide_header Request-Context;<br>
> > proxy_hide_header X-Powered-By;<br>
> > proxy_hide_header X-AspNet-Version;<br>
> > proxy_hide_header X-AspNetMvc-Version;<br>
> ><br>
> ><br>
> > I have not experienced the problem you mention, I just thought I<br>
> would<br>
> > offer my config.<br>
> ><br>
> ><br>
> > ___________________________________________<br>
> ><br>
> > Michael Friscia<br>
> ><br>
> > Office of Communications<br>
> ><br>
> > Yale School of Medicine<br>
> ><br>
> > (203) 737-7932 – office<br>
> ><br>
> > (203) 931-5381 – mobile<br>
> ><br>
> > <a href="https://mailtrack.io/trace/link/a61adbc81bbb4743e50220408108f7e1b8f3af40?url=http%3A%2F%2Fweb.yale.edu&userId=74734&signature=0767ce63378dc575" rel="noreferrer" target="_blank">http://web.yale.edu</a><br>
> ><br>
</div></div>> <<a href="https://mailtrack.io/trace/link/661443b9951f60c19cd0ed2ec67ca9c38485a127?url=https%3A%2F%2Fmailtrack.io%2Ftrace%2Flink%2F8357a0bdd8c40c2ff5b7d91c7797cbc7a8535&userId=74734&signature=fd94611bb5198158" rel="noreferrer" target="_blank">https://mailtrack.io/trace/link/8357a0bdd8c40c2ff5b7d91c7797cbc7a8535</a><br>
> ffb?url=http%3A%2F%<a href="https://mailtrack.io/trace/link/8d2b22d027b9e7af0a2468545c2e35529237af19?url=http%3A%2F%2F2Fweb.yale.edu&userId=74734&signature=5ab2d28a496b50f6" rel="noreferrer" target="_blank">2Fweb.yale.edu</a>%2F&userId=74734&signature=d652edf1f4<br>
> f21323><br>
> ><br>
> ><br>
> > ------------------------------<br>
> > *From:* nginx <<a href="mailto:nginx-bounces@nginx.org" target="_blank">nginx-bounces@nginx.org</a>> on behalf of Quintin Par <<br>
> > <a href="mailto:quintinpar@gmail.com" target="_blank">quintinpar@gmail.com</a>><br>
> > *Sent:* Saturday, May 12, 2018 1:32 PM<br>
> > *To:* <a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a><br>
> > *Subject:* Re: Debugging Nginx Cache Misses: Hitting high number of<br>
<span>> MISS<br>
> > despite high proxy valid<br>
> ><br>
> ><br>
</span><span>> > That’s the tricky part. These MISSes are intermittent. Whenever I<br>
> run curl<br>
> > I get HITs but I end up seeing a lot of MISS in the logs.<br>
> ><br>
> ><br>
> ><br>
> > How do I log these MiSSes with the reason? I want to know what<br>
> headers<br>
> > ended up bypassing the cache.<br>
> ><br>
> ><br>
> ><br>
> > Here’s my caching config<br>
> ><br>
> ><br>
> ><br>
> > proxy_pass <a href="https://mailtrack.io/trace/link/071291057b0a07a97c3170df6ceb9706ad0e553d?url=http%3A%2F%2F127.0.0.1%3A8000&userId=74734&signature=21d883fe1973c407" rel="noreferrer" target="_blank">http://127.0.0.1:8000</a><br>
> ><br>
</span>> <<a href="https://mailtrack.io/trace/link/6864e1b6645eae9d83bd78154bd244cbd3132407?url=https%3A%2F%2Furldefense.proofpoint.com%2Fv2%2Furl%3Fu%3Dhttp-3A__127.0.0.1-3A8000%26&userId=74734&signature=05baa72c55f6e580" rel="noreferrer" target="_blank">https://urldefense.proofpoint.com/v2/url?u=http-3A__127.0.0.1-3A8000&</a><br>
> d=DwMFaQ&c=cjytLXgP8ixuoHflwc-poQ&r=wvXEDjvtDPcv7AlldT5UvDx32KXBEM6um_<br>
> lS023SJrs&m=F-qGMOyS74uE8JM-dOLmNH92bQ1xQ-7Rj1d6k-_WST4&s=NHvlb1WColNw<br>
> TWBF36P1whJdu5iWHK9_50IDHugaEdQ&e=><br>
<div><div class="m_-4352308354741881759h5">> > ;<br>
> ><br>
> > proxy_set_header X-Real-IP $remote_addr;<br>
> ><br>
> > proxy_set_header X-Forwarded-For<br>
> > $proxy_add_x_forwarded_for;<br>
> ><br>
> > proxy_set_header X-Forwarded-Proto https;<br>
> ><br>
> > proxy_set_header X-Forwarded-Port 443;<br>
> ><br>
> ><br>
> ><br>
> > # If logged in, don't cache.<br>
> ><br>
> > if ($http_cookie ~*<br>
> "comment_author_|wordpress_(?!test_cookie)|wp-postpass_"<br>
> > ) {<br>
> ><br>
> > set $do_not_cache 1;<br>
> ><br>
> > }<br>
> ><br>
> > proxy_cache_key "$<a>scheme://$host$request_uri$</a><br>
> > do_not_cache";<br>
> ><br>
> > proxy_cache staticfilecache;<br>
> ><br>
> > add_header Cache-Control public;<br>
> ><br>
> > proxy_cache_valid 200 120d;<br>
> ><br>
> > proxy_hide_header "Set-Cookie";<br>
> ><br>
> > proxy_ignore_headers "Set-Cookie";<br>
> ><br>
> > proxy_ignore_headers "Cache-Control";<br>
> ><br>
> > proxy_hide_header "Cache-Control";<br>
> ><br>
> > proxy_pass_header X-Accel-Expires;<br>
> ><br>
> ><br>
> ><br>
> > proxy_set_header Accept-Encoding "";<br>
> ><br>
> > proxy_ignore_headers Expires;<br>
> ><br>
> > add_header X-Cache-Status $upstream_cache_status;<br>
> ><br>
> > proxy_cache_use_stale timeout;<br>
> ><br>
> > proxy_cache_bypass $arg_nocache $do_not_cache;<br>
> > - Quintin<br>
> ><br>
> ><br>
> > On Sat, May 12, 2018 at 10:29 AM Lucas Rolff <<a href="mailto:lucas@lucasrolff.com" target="_blank">lucas@lucasrolff.com</a>><br>
> wrote:<br>
> ><br>
> > It can be as simple as doing a curl to your “origin” url (the one<br>
> you<br>
> > proxy_pass to) for the files you see that gets a lot of MISS’s – if<br>
> there’s<br>
> > odd headers such as cookies etc, then you’ll most likely experience<br>
> a bad<br>
> > cache if your nginx is configured to not ignore those headers.<br>
> ><br>
> ><br>
> ><br>
</div></div>> > *From: *nginx <<a href="mailto:nginx-bounces@nginx.org" target="_blank">nginx-bounces@nginx.org</a>> on behalf of Quintin Par <<br>
> > <a href="mailto:quintinpar@gmail.com" target="_blank">quintinpar@gmail.com</a>><br>
> > *Reply-To: *"<a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a>" <<a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a>><br>
> > *Date: *Saturday, 12 May 2018 at 18.26<br>
> > *To: *"<a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a>" <<a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a>><br>
> > *Subject: *Debugging Nginx Cache Misses: Hitting high number of MISS<br>
<div><div class="m_-4352308354741881759h5">> > despite high proxy valid<br>
> ><br>
> ><br>
> ><br>
> > [image:<br>
> ><br>
> <a href="https://mailtrack.io/trace/mail/86a613eb1ce46a4e7fa6f9eb96989cddae6398" rel="noreferrer" target="_blank">https://mailtrack.io/trace/mail/86a613eb1ce46a4e7fa6f9eb96989cddae6398</a><br>
> 00.png?u=74734]<br>
> ><br>
> > My proxy cache path is set to a very high size<br>
> ><br>
> ><br>
> ><br>
> > proxy_cache_path /var/lib/nginx/cache levels=1:2<br>
> > keys_zone=staticfilecache:180m max_size=700m;<br>
> ><br>
> > and the size used is only<br>
> ><br>
> ><br>
> ><br>
> > sudo du -sh *<br>
> ><br>
> > 14M cache<br>
> ><br>
> > 4.0K proxy<br>
> ><br>
> > Proxy cache valid is set to<br>
> ><br>
> ><br>
> ><br>
> > proxy_cache_valid 200 120d;<br>
> ><br>
> > I track HIT and MISS via<br>
> ><br>
> ><br>
> ><br>
> > add_header X-Cache-Status $upstream_cache_status;<br>
> ><br>
> > Despite these settings I am seeing a lot of MISSes. And this is for<br>
> pages<br>
> > I intentionally ran a cache warmer an hour ago.<br>
> ><br>
> ><br>
> ><br>
> > How do I debug why these MISSes are happening? How do I find out if<br>
> the<br>
> > miss was due to eviction, expiration, some rogue header etc? Does<br>
> Nginx<br>
> > provide commands for this?<br>
> ><br>
> ><br>
> ><br>
> > - Quintin<br>
> > _______________________________________________<br>
> > nginx mailing list<br>
> > <a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a><br>
> > <a href="https://mailtrack.io/trace/link/956685bf1c269e5b5e505d57769f24a31e3e2442?url=http%3A%2F%2Fmailman.nginx.org%2Fmailman%2Flistinfo%2Fnginx&userId=74734&signature=61a29f8655dde16e" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx</a><br>
> ><br>
</div></div>> <<a href="https://mailtrack.io/trace/link/0f96ef0fff2b29b47c79cd24c346157878aaf2e5?url=https%3A%2F%2Fmailtrack.io%2Ftrace%2Flink%2F122c3dbd333c388f47f5c2776af9ebc3fc75a&userId=74734&signature=0b1e1864a472eee2" rel="noreferrer" target="_blank">https://mailtrack.io/trace/link/122c3dbd333c388f47f5c2776af9ebc3fc75a</a><br>
> e10?url=https%3A%2F%<a href="https://mailtrack.io/trace/link/5a068de37a59a883da6fd59fdd4026a152a7fc91?url=http%3A%2F%2F2Furldefense.proofpoint.com&userId=74734&signature=ca8f6ddc8276a370" rel="noreferrer" target="_blank">2Furldefense.proofpoint.com</a>%2Fv2%2Furl%3Fu%3Dhttp-<br>
> 3A__mailman.nginx.org_mailman_listinfo_nginx%26d%3DDwMFaQ%26c%3DcjytLX<br>
> gP8ixuoHflwc-poQ%26r%3DwvXEDjvtDPcv7AlldT5UvDx32KXBEM6um_lS023SJrs%26m<br>
> %3DF-qGMOyS74uE8JM-dOLmNH92bQ1xQ-7Rj1d6k-_WST4%26s%3DD3LnZhfobOtlEStCv<br>
> CDrcwmHydEHaGRFC4gnWvRT5Uk%26e%3D&userId=74734&signature=56c7a7ad18b2c<br>
> 057><br>
<span>> ><br>
> ><br>
> > _______________________________________________<br>
> > nginx mailing list<br>
> > <a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a><br>
> > <a href="https://mailtrack.io/trace/link/f500ef35fc0275c82402a7af89180ae2c67cea6a?url=http%3A%2F%2Fmailman.nginx.org%2Fmailman%2Flistinfo%2Fnginx&userId=74734&signature=aa7675f47e061eec" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx</a><br>
> ><br>
</span>> <<a href="https://mailtrack.io/trace/link/d6afed06499ad18204cf041056d4781772869d72?url=https%3A%2F%2Fmailtrack.io%2Ftrace%2Flink%2F92c2700d67bd6891ca1606e2df4e0f11c6d82&userId=74734&signature=59dcf4fe89ac3c3c" rel="noreferrer" target="_blank">https://mailtrack.io/trace/link/92c2700d67bd6891ca1606e2df4e0f11c6d82</a><br>
> 260?url=http%3A%2F%<a href="https://mailtrack.io/trace/link/3ec600220aa90db4d165256c22910f3c97fa118d?url=http%3A%2F%2F2Fmailman.nginx.org&userId=74734&signature=c116773b55639f01" rel="noreferrer" target="_blank">2Fmailman.nginx.org</a>%2Fmailman%2Flistinfo%2Fnginx&us<br>
> erId=74734&signature=3763121afa828bb7><br>
<span>> ><br>
> _______________________________________________<br>
> nginx mailing list<br>
> <a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a><br>
> <a href="https://mailtrack.io/trace/link/8e6777181b5012ff78b980aafec44306b2954bae?url=http%3A%2F%2Fmailman.nginx.org%2Fmailman%2Flistinfo%2Fnginx&userId=74734&signature=2adebca7901eccce" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx</a><br>
<br>
</span>Posted at Nginx Forum: <a href="https://mailtrack.io/trace/link/89e8f350a5c632ccafaadd90a9a8114ecac2e688?url=https%3A%2F%2Fforum.nginx.org%2Fread.php%3F2%2C279764%2C279771%23msg-279771&userId=74734&signature=3a01022d1b56bd07" rel="noreferrer" target="_blank">https://forum.nginx.org/read.php?2,279764,279771#msg-279771</a><br>
<div class="m_-4352308354741881759HOEnZb"><div class="m_-4352308354741881759h5"><br>
_______________________________________________<br>
nginx mailing list<br>
<a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a><br>
<a href="https://mailtrack.io/trace/link/8e6777181b5012ff78b980aafec44306b2954bae?url=http%3A%2F%2Fmailman.nginx.org%2Fmailman%2Flistinfo%2Fnginx&userId=74734&signature=2adebca7901eccce" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx</a></div></div></blockquote></div><br></div>
_______________________________________________<br>nginx mailing list<br><a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a><br><a href="http://mailman.nginx.org/mailman/listinfo/nginx" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx</a></div></blockquote></div><br></div>_______________________________________________<br>
nginx mailing list<br>
<a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx</a></blockquote></div>