Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Запретить frontend nginx кэшировать ответ от backend


 

Запретить frontend nginx кэшировать ответ от backend

 

Этот самы вопрос задавал на sysadmins.ru , сам себе и ответил =)))

 

Процитирую себя-же:

Доброго времени суток!

Есть схема frontend nginx и backend nginx сервера

На frontend включен кэш 200х ответов

На backend есть файл ban, куда директивами deny заносим всяких негодяем
Код ответа 403 при этом переписываем на 200 и подставляем тупо htmlку

Столкнулись с проблемой, иногда по истичению кэша на frontend первым запрос после очистки кеша делает кто-то из этого банного списка с backend и проксирующий сервер кеширует эту самую htmlку

Соответственно нормальные люди видят дичь, поисковые роботы тоже, короче не фонтан совсем...

Вопрос знатокам, как заставить backend говорить frontend что этот ответ не кешировать

Или есть мысли, как это победить?

 

Как решил:

 

фронтенд:

Код:

    location / {
        error_page 500 =200 /50x.html;

        auth_request       /bot_finder;

        proxy_pass http://ip_backend_server;
        proxy_redirect     off;

        proxy_read_timeout         500;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_cache default;
        proxy_cache_key "$scheme$request_method$host$request_uri";
        proxy_cache_valid   200 302 301 240m;
        proxy_cache_valid   404 1m;
    }

    location /bot_finder {
        proxy_pass http://ip_backend_server/bkmz;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_pass_request_body off;
        proxy_set_header Content-Length "";
    }

    location /50x.html {
        proxy_pass http://ip_backend_server/50x.html;
    }





бэкенд:

Код:

set_real_ip_from  ip_frontend_server;

location /bkmz {
   error_page 403 =500 @auth_failed;
   try_files @uri @auth_ok;
}

location @auth_failed {
    return 403;
}

location @auth_ok {
    return 200;
}

#Test
deny 1.1.1.1/32 ;
deny 2.2.2.0/22;

Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.
Весь материал на сайте носит ознакомительный характер,
за его использование другими людьми, автор ответственности не несет.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект