Jump to content
Калькуляторы

nginx запретить браузеру кешировать редиректы

Делаю роутер для Free Wifi Hotspot с рекламой.

Рекламная страница должна показываться один раз при подключении.

Т.е. юзер подключается к вафле, открывает браузер, вместо его любимого сайта открывается рекламка с кнопкой продолжить. Юзер жмякает по кнопке продолжить и его редиректит на его любимый сайт.

 

В принципе все сделал:

Завернул с помощью iptables весь трафик по 80 порту в nginx, установленный на роутере.

nginx на любой url отдает 302 редирект на страничку с рекламой

Со странички по нажатию на кнопку открываем доступ, делаем переход на исходный сайт,

но вот тут подстава: браузер запомнил, что на mail.ru (к примеру) отдавался код 302 и сразу уходит снова на страничку с рекламой.

 

Делал 5-ти секундную задержку для перехода (чтобы Iptables точно успевал отработать) - не помогло.

Через пару минут браузер идет сразу на mail.ru

 

Конфиг nginx:

 

 

server {
   listen       80;
   server_name  localhost;
   access_log /var/log/nginx/access.log vhost_ip_full_format;
   root           /var/www/htdocs;
   index index.php;

   location / {
       if ($host !~ ^(192.168.100.1)$ ) {
           add_header Cache-Control "no-cache, no-store";
           expires 0;
           rewrite ^ http://192.168.100.1/index.php?host=$host$request_uri redirect;
       }
   }

   location ~ \index.php$ {
       fastcgi_pass   127.0.0.1:9000;
       fastcgi_index  index.php;
       fastcgi_param  SCRIPT_FILENAME  /var/www/htdocs$fastcgi_script_name;
       include        fastcgi_params;
   }
}

 

Share this post


Link to post
Share on other sites

Дело не в браузере, а в iptables. Редирект остаётся в conntrack. Попробуйте его оттуда удалять (см. conntrack-tools).

Share this post


Link to post
Share on other sites

connection close!!!

а у вас походу кипалив с нгинхом, вот иптаблес и продолжает пересылать пакеты ибо соединение ещё активно, а оно у него в контраке должно быть...

Share this post


Link to post
Share on other sites

Если делаю редирект на любой другой сайт, то все проходит нормально.

Как может быть keepalive с nginx, если я по-сути по разным адресам скачу? mail.ru -> 192.168.100.1 -> mail.ru

Share this post


Link to post
Share on other sites

Хм. и правда keepalive_timeout 0 помог, Правда IE все-равно тупит и только со второго раза переходит куда надо.

Share this post


Link to post
Share on other sites

Сделайте чтобы нгинх отдавал: connection: close заголовок, ну может ещё в нём настройки есть для этого. и браузеры будут сами рвать соединение после получения ответа.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this