nginx возвращает старые данные после перезагрузки

#nginx #nginx-reverse-proxy

#nginx #nginx-обратный прокси

Вопрос:

У меня ниже конфигурация nginx. Согласно моей настройке, nginx должен обслуживать запросы от вышестоящего сервера, если такая конфигурация существует, в противном случае в конце следует просто вернуть страницу по умолчанию из серверного блока.

Другая внешняя система (consul-template) динамически генерирует блок восходящего сервера, после чего nginx должен прекратить обслуживать страницу по умолчанию и начать обслуживать содержимое с фактического восходящего сервера.

Моя проблема в том, что nginx не делает этого для первых нескольких запросов, но в конечном итоге начнет обслуживать трафик из восходящего потока, как и ожидалось. Я подозреваю, что на стороне nginx происходит некоторое кэширование, с которым мне нужна помощь.

 http {                                                                 
      # This is a conditional block. It may or may not be present.                                       
      upstream test {                        
        server 192.168.0.7:8080;             
      }                                      
      server {                               
        server_name lvh.me;     
        listen 80;              
        listen [::]:80;         
                                
        location / {            
          proxy_pass http://test;
        }                        
      }                                                
  
  # Default server block. Catches all requests.                          
  server {                  
    server_name _;          
    listen 80 default_server;
    listen [::]:80 default_server;
                                  
    root /var/www/localhost;      
    try_files $uri $uri/ /index.html;
                                     
    add_header Last-Modified $date_gmt;
    add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
    if_modified_since off;                                                                      
    expires off;                                                                                
    etag off;                                                                                   
                                                                                                
    location = /favicon.ico {                                                                   
      alias /var/www/localhost/favicon.ico;                                                     
    }                                                                                           
  }                                                                                             
}  
 

Подробные шаги:

  1. Не присутствует вышестоящий сервер -> сделать запрос -> страница по умолчанию возвращается.
  • (Необязательно) Я даже жду здесь> 30 секунд, и все равно наблюдается то же поведение, что указывает на то, что это наверняка проблема с кэшированием.
  1. Добавить вышестоящий сервер -> перезагрузить nginx -> сделать запрос -> снова возвращается страница по умолчанию. <- Это плохо!!
  2. Сделайте еще один запрос -> на этот раз возвращается страница из восходящего потока.
  3. Каким-то образом nginx не распознал, чтобы вернуть нужную страницу на втором шаге.