<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;}
/* 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-compose;
font-family:"Calibri","sans-serif";
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";}
@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">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 www.domain.edu;<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 http://wyebase;<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 http://wyebase;<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>