#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;
}
}
}
Подробные шаги:
- Не присутствует вышестоящий сервер -> сделать запрос -> страница по умолчанию возвращается.
- (Необязательно) Я даже жду здесь> 30 секунд, и все равно наблюдается то же поведение, что указывает на то, что это наверняка проблема с кэшированием.
- Добавить вышестоящий сервер -> перезагрузить nginx -> сделать запрос -> снова возвращается страница по умолчанию. <- Это плохо!!
- Сделайте еще один запрос -> на этот раз возвращается страница из восходящего потока.
- Каким-то образом nginx не распознал, чтобы вернуть нужную страницу на втором шаге.