<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div class="elementToProof"><span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof">I'll bet that's it!  There is nothing in my configuration that makes
 the IP addresses of the containers in the Docker network stay fixed.  I would not be surprised if, when two or more containers are restarted (as they probably are every once in a while when logrotate runs), some or all of them may exchange IP addresses.</span></div>
<div class="elementToProof"><span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"><br>
</span></div>
<div class="elementToProof"><span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">I will try to duplicate this so I can post the results here, but in any case I will find
 out how to assign specific IP addresses to the containers in the Docker configuration and do that from now on.  Your observation that nginx looks up the IP once and assumes it will not change would explain what is going on.<br>
</span></div>
<div class="elementToProof">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div id="Signature">
<div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
I can't thank you enough, as this was driving me crazy.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Thank you also for your other very helpful suggestions (reloading nginx instead of restarting, forcing DNS lookups).<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
</div>
</div>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%" class="elementToProof">
<blockquote style="border-color: rgb(200, 200, 200); border-left: 3px solid rgb(200, 200, 200); padding-left: 1ex; margin-left: 0.8ex; color: rgb(102, 102, 102);" itemscope="" itemtype="https://schemas.microsoft.com/QuotedText">
<br>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt">
<div class="PlainText">> I have no idea what triggers this behavior. Once it happens, the only<br>
> thing that can be done to correct it is to restart nginx. After that<br>
> (could be minutes, hours, or days), the server will function as<br>
> expected once again. Since I am using this setup in several<br>
> production servers, at first I created a cron job to restart nginx<br>
> every day, then every hour, and finally I decided to poll the sites<br>
> on each server every five minutes, so that if the responses don’t<br>
> look right I can restart nginx without having users experience a<br>
> lengthy interruption.<br>
<br>
Did you try reload instead of a restart? That's usually enough for<br>
getting nginx update the sources, and is transparent to your users.<br>
<br>
<br>
As for the actual problem, as I understand you have 4 docker<br>
containers:<br>
- aaa.com (Rails app)<br>
- bbb.com (Rails app)<br>
- ccc.com (Rails app)<br>
- proxy (nginx, with the static assets for the 3 sites)<br>
<br>
Do the ip addresses for the rails sites change over time?<br>
Mind that nginx will query the hostname only once (at startup/reload),<br>
*and use that same ip forever*<br>
If the other containers switched ips, that would produce the exact<br>
behavior that you are seeing.<br>
<br>
You can force nginx to requery dns by using a variable<br>
</div>
<div class="PlainText ContentPasted0">see <a href="https://forum.nginx.org/read.php?2,215830,215832#msg-215832" id="LPNoLPOWALinkPreview">https://forum.nginx.org/read.php?2,215830,215832#msg-215832</a>
<br>
</div>
<div class="_Entity _EType_OWALinkPreview _EId_OWALinkPreview _EReadonly_1"></div>
<br>
</span></font></div>
</blockquote>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt">
<div class="PlainText elementToProof"><br>
<br>
<br>
</div>
</span></font></div>
</body>
</html>