<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><a name="_MailEndCompose"><span style="color:#1F497D">So now it doesn’t look like it’s a caching issue at all. I’ve completely gutted my config files and stripped it down, and I’m still seeing the same issue. I even shot a video of what
 I’m seeing and stuck it on YouTube as an example (</span></a><a href="http://youtu.be/lPR1453YBUw">http://youtu.be/lPR1453YBUw</a><span style="color:#1F497D">). As the video shows, the connections for the linked images don’t load properly on reloads if I’m
 connecting through the NGINX server, but work fine if I connect directly to the backend origin server. Has anyone ever seen anything like this? Any ideas?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">My new minimalist config files (I’ve included the SSL version this time as well):<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">user www-data;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">worker_processes 4<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">pid /var/run/nginx.pid;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">error_log /var/log/nginx/error/error.log crit;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">events {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                worker_connections 20000;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                use epoll;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">http {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                include /etc/nginx/mime.types;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                default_type application/octet-stream;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                proxy_cache_path /tmp/nginxcache levels=1:2:2 keys_zone=mycache:3096m max_size=3584m inactive=240m;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                proxy_temp_path /tmp/nginxtmp;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                upstream wyebase {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                server   10.64.1.69:80;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:.5in"><span style="color:#1F497D">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                <o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:.5in"><span style="color:#1F497D">upstream wyessl {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                server   10.64.1.69:443;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:.5in"><span style="color:#1F497D">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                server {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                listen 80 default_server;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                server_name www.domain.edu;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                location / {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                                proxy_pass        
</span><a href="http://wyebase">http://wyebase</a><span style="color:#1F497D">;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                server {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                listen 443 ssl spdy;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                server_name www.domain.edu;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                include /etc/nginx/ssl.conf;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                ssl_certificate                    /etc/nginx/ssl/xbs2014.crt;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                ssl_certificate_key          /etc/nginx/ssl/xbs2014.key;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                location / {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                                proxy_pass         https://wyessl;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">BH<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""><br>
<b>Sent:</b> Tuesday, February 25, 2014 9:52 AM<br>
<b>To:</b> nginx@nginx.org<br>
<b>Subject:</b> Odd issue with proxy_pass serving wrong cached data<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m having an odd issue, and I’m not sure where to start. <o:p>
</o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">We’ve been implementing a number of NGINX servers recently, and one of them is doing a proxy_pass to an older IIS7 server that we’ll be phasing out soon, which is hosting a couple of minor sites in our datacenter.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">When initially browsing the site, everything appears to be working properly. But in most browsers, if you hit reload a couple of times the NGINX server either serves the wrong files (i.e. the page calls for Image1.PNG, but the server is
 returning the contents of Image2.PNG), or simply fails to load the image or file at all. It will always load the base HTML page, but the linked files (css files, images, etc.) seem to randomly glitch.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Because it only happens when we click reload, I’m presuming that we’re looking at some sort of configuration problem reading the proxy_pass cache. The problem doesn’t occur and the sites work normally if we bypass the NGINX server and connect
 directly to the content origin server.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Anyone have any idea where I should start with this one? It’s a bit of a bizarre problem, and it’s really got me scratching my head. I’ve done a number of searches and can’t find anything online discussing a similar problem.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">BH<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">user www-data;<o:p></o:p></p>
<p class="MsoNormal">worker_processes 4<o:p></o:p></p>
<p class="MsoNormal">pid /var/run/nginx.pid;<o:p></o:p></p>
<p class="MsoNormal">error_log /var/log/nginx/error/error.log crit;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">events {<o:p></o:p></p>
<p class="MsoNormal">                worker_connections 20000;<o:p></o:p></p>
<p class="MsoNormal">                use epoll;<o:p></o:p></p>
<p class="MsoNormal">                multi_accept on;<o:p></o:p></p>
<p class="MsoNormal">               accept_mutex off;<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">http {<o:p></o:p></p>
<p class="MsoNormal">                sendfile on;<o:p></o:p></p>
<p class="MsoNormal">                tcp_nopush on;<o:p></o:p></p>
<p class="MsoNormal">                tcp_nodelay on;<o:p></o:p></p>
<p class="MsoNormal">                keepalive_timeout 65;<o:p></o:p></p>
<p class="MsoNormal">                client_header_timeout 20;<o:p></o:p></p>
<p class="MsoNormal">                client_body_timeout 20;<o:p></o:p></p>
<p class="MsoNormal">                reset_timedout_connection on;<o:p></o:p></p>
<p class="MsoNormal">                types_hash_max_size 2048;<o:p></o:p></p>
<p class="MsoNormal">                server_tokens off;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">                include /etc/nginx/mime.types;<o:p></o:p></p>
<p class="MsoNormal">                default_type application/octet-stream;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="text-indent:.5in">#gzip<o:p></o:p></p>
<p class="MsoNormal">                gzip on;<o:p></o:p></p>
<p class="MsoNormal">                gzip_disable "MSIE [1-6]\.";<o:p></o:p></p>
<p class="MsoNormal">                gzip_http_version 1.0;<o:p></o:p></p>
<p class="MsoNormal">                gzip_vary on;<o:p></o:p></p>
<p class="MsoNormal">                gzip_comp_level 6;<o:p></o:p></p>
<p class="MsoNormal">                gzip_min_length 512;<o:p></o:p></p>
<p class="MsoNormal">                gzip_proxied any;<o:p></o:p></p>
<p class="MsoNormal">                gzip_buffers 16 8k;<o:p></o:p></p>
<p class="MsoNormal">                gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;<o:p></o:p></p>
<p class="MsoNormal">                <o:p></o:p></p>
<p class="MsoNormal">                #caching<o:p></o:p></p>
<p class="MsoNormal">                open_file_cache max=200000 inactive=20s;<o:p></o:p></p>
<p class="MsoNormal">                open_file_cache_valid 30s;<o:p></o:p></p>
<p class="MsoNormal">                open_file_cache_min_uses 2;<o:p></o:p></p>
<p class="MsoNormal">                open_file_cache_errors on;<o:p></o:p></p>
<p class="MsoNormal" style="text-indent:.5in">proxy_cache_path /tmp/nginxcache levels=1:2:2 keys_zone=mycache:3096m max_size=3584m inactive=240m;<o:p></o:p></p>
<p class="MsoNormal">                proxy_temp_path /tmp/nginxtmp;<o:p></o:p></p>
<p class="MsoNormal">                proxy_redirect  off;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">                upstream wyebase {<o:p></o:p></p>
<p class="MsoNormal">                                server   10.64.1.69:80;<o:p></o:p></p>
<p class="MsoNormal" style="text-indent:.5in">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="text-indent:.5in">server {<o:p></o:p></p>
<p class="MsoNormal">                                listen 80 default_server;<o:p></o:p></p>
<p class="MsoNormal">                                server_name <a href="http://www.domain.edu">
www.domain.edu</a>;<o:p></o:p></p>
<p class="MsoNormal">                                proxy_redirect                                                  off;<o:p></o:p></p>
<p class="MsoNormal">                                proxy_set_header          Host                       $host;<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in;text-indent:.5in">proxy_set_header          X-Real-IP             $remote_addr;<o:p></o:p></p>
<p class="MsoNormal">                                proxy_set_header          X-Forwarded-For             $proxy_add_x_forwarded_for;<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in;text-indent:.5in">proxy_connect_timeout              75s;<o:p></o:p></p>
<p class="MsoNormal">                                proxy_send_timeout     75s;<o:p></o:p></p>
<p class="MsoNormal">                                proxy_read_timeout     75s;<o:p></o:p></p>
<p class="MsoNormal">                                proxy_pass_header       Expires;<o:p></o:p></p>
<p class="MsoNormal">                                proxy_pass_header       Cache-Control;<o:p></o:p></p>
<p class="MsoNormal">                                proxy_pass_header       Last-Modified;<o:p></o:p></p>
<p class="MsoNormal">                                proxy_pass_header       ETag;<o:p></o:p></p>
<p class="MsoNormal">                                proxy_pass_header       Content-Length;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">                                proxy_cache      mycache;<o:p></o:p></p>
<p class="MsoNormal">                                proxy_cache_key            "$scheme://$host$request_uri";<o:p></o:p></p>
<p class="MsoNormal">                                proxy_cache_bypass     $http_secret_header;<o:p></o:p></p>
<p class="MsoNormal">                                proxy_ignore_headers "Cache-Control";<o:p></o:p></p>
<p class="MsoNormal">                                proxy_ignore_headers "Set-Cookie";<o:p></o:p></p>
<p class="MsoNormal">                                add_header       X-Cache-Status $upstream_cache_status;          
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">                                location / {<o:p></o:p></p>
<p class="MsoNormal">                                                proxy_cache_valid          200 301 302 304 10m; #good requests<o:p></o:p></p>
<p class="MsoNormal">                                                proxy_cache_valid          404 403 10m; #access errors<o:p></o:p></p>
<p class="MsoNormal">                                                proxy_cache_valid          500 501 502 503 504 1m; # execution or load errors
<o:p></o:p></p>
<p class="MsoNormal">                                                proxy_cache_use_stale                error timeout invalid_header updating http_500 http_502 http_503 http_504;<o:p></o:p></p>
<p class="MsoNormal">                                                expires                 60m;
<o:p></o:p></p>
<p class="MsoNormal">                                                proxy_pass        
<a href="http://wyebase">http://wyebase</a>;<o:p></o:p></p>
<p class="MsoNormal">                                }<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">                                location ~* \.(css|js|png|jpe?g|gif|ico)$ {<o:p></o:p></p>
<p class="MsoNormal">                                                proxy_cache_valid          200 301 302 304 1h; #good requests<o:p></o:p></p>
<p class="MsoNormal">                                                proxy_cache_valid          404 403 10m; #access errors<o:p></o:p></p>
<p class="MsoNormal">                                                proxy_cache_valid          500 501 502 503 504 1m; # execution or load errors
<o:p></o:p></p>
<p class="MsoNormal">                                                proxy_cache_use_stale                error timeout invalid_header updating http_500 http_502 http_503 http_504;<o:p></o:p></p>
<p class="MsoNormal">                                                expires 14d;
<o:p></o:p></p>
<p class="MsoNormal">                                                proxy_pass        
<a href="http://wyebase">http://wyebase</a>;<o:p></o:p></p>
<p class="MsoNormal">                                }<o:p></o:p></p>
<p class="MsoNormal">                }<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>