LINUX.ORG.RU
решено ФорумAdmin

Путаются сайты

 ,


2

3

Суть: есть несколько число внутренних сайтов(wiki,dev, и т.д.) привязаны к одному IP(10.0.0.254) через nginx. Разделяются по внутреннему доменному имени.
соответственно в nginx.conf несколько секций server и listen и server_name с передачей динамических запросов на раздельные пулы phpfpm.

ИЗРЕДКА (где то раз в год, в пол года) происходит странное.
С соседней машины смотрю сайт, к примеру htpp://wiki.internal.zone, а firefox показывает htpp://dev.internal.zone.
Закрываю страницу или обновляю(F5 | crtl+R) - без разницы. Попробовал рестартовать nginx - ничего не изменилось.
Пробую зайти другим браузером( с той же машины) нормально зашел на wiki.
Снова захожу в firefox на htpp://wiki.internal.zone - результат с сервера htpp://dev.internal.zone.
Браузер firefox не рестартовал, только вкладки закрывал. Версия браузера естественно уже не раз меняется за эти полгода, год. Nginx тоже менялся пару раз.
сайт wiki конфигурационно в nginx.conf не отличим от dev.

Аналогичный случай был с перескакиванием на ещё один внутренний сайт.
Схожесть была только в том что также один IP и несколько серверов с разными именами.

Было ли у кого такое может смогли разобраться в чем причина?

Кто глючит firefox что то не так кэширует или всё таки nginx?

★★★★★

P.S.
htpp написал чтобы текст не преобразовывался в ссылки.

Atlant ★★★★★ ()

Мистика. Ни разу не видел такого. За тредом послежу. Вдруг случится то же самое.

А что говорят акцесс логи нжинкса в этом касячном промежутке? Там домен указан же.

deep-purple ★★★★★ ()
Последнее исправление: deep-purple (всего исправлений: 1 )


Кто глючит firefox что то не так кэширует


если ff например не будет отсылать в http-заголовке запроса Host с доменом или будет слать Host с несуществующим на этом IP доменом, то nginx выдаст первый домен из конфига или специально настроенный для таких случаев дефолтный

fjoe ()
Ответ на: комментарий от deep-purple

запустил tcpdump с записью в файл всего с ip клиента и портом 80 на сервере nginx. Смотрю полученный файл в Wireshark.
Да простят меня адепты чистого linux, но клиент на winxp.
Запрос

GET / HTTP/1.1
Host: wiki.internal.zone
User-Agent: Mozilla/5.0 (Windows NT 5.2; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: 8f28ead4010e8e8e18b67714b96c261c=v9p0k4g673v3sq6pu5asa1vgf3
Connection: keep-alive
Upgrade-Insecure-Requests: 1

Ответ
HTTP/1.1 302 Found
Server: nginx/1.2.5
Date: Wed, 02 Nov 2016 05:37:11 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 1900
Connection: keep-alive
Keep-Alive: timeout=20
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Location: http://dev.internal.zone/
Cache-Control: private


<!DOCTYPE ........... 
   лишнее стерто
</html>

Atlant ★★★★★ ()
Ответ на: комментарий от Atlant

на то что отвечает ASP.NET это просто в данный момент идет пересылка на другой сервер с виндой. В прошлый раз перенаправлял на php-ный сайт.
Естественно поправил все имена с доменами на вымышленные.

Atlant ★★★★★ ()
Ответ на: комментарий от Atlant

Если запускаю «Приватный просмотр» с того же firefox - открывается нормально.
Сейчас попробую записать приват снифером.

Atlant ★★★★★ ()
Ответ на: комментарий от Atlant

забавно со второго раза привата, я снова попал на dev вместо wiki.... B снифер аналогичный ответ показал...

Atlant ★★★★★ ()
Последнее исправление: Atlant (всего исправлений: 1 )
Ответ на: комментарий от Atlant

Смотри в конфигах хостов нжинкса что-то про 302, возможно какой-то локейшн возвращает 302, нжинкс разматывает это таким образом, что влечет за собой такой переброс.

deep-purple ★★★★★ ()
Ответ на: комментарий от deep-purple

Конкретное задание «302» вообще отсутствует.
Если считать «302 Ресурс временно перемещен», то тогда это должен давать его или nginx или php или php-fpm
Есть 444 для блокировки доступа без имени.

server {
    listen      80;
    server_name "";
    access_log /var/log/nginx/noname_site.access_log main;
    error_log /var/log/nginx/noname_site.error_log info;
    return      444;
}

Atlant ★★★★★ ()
Ответ на: комментарий от Atlant

Настройка wiki в nginx.conf

        server {
                listen 10.0.0.254:80;
                server_name wiki.internal.zone;

                access_log /var/log/nginx/wiki.internal.zone.access_log main;
                error_log /var/log/nginx/wiki.internal.zone.error_log info;
                index index.php index.html index.htm default.html default.htm;

                allow 10.0.0.0/16;
                deny all;
                root /var/www/wiki.internal.zone/htdocs;
                client_max_body_size 5m;
                client_body_timeout 60;

                location /mirrors {
                    root /var/www/wiki.internal.zone/htdocs/mirrors;
                    autoindex on;
                }

                location / {
                    try_files $uri $uri/ /index.php;
                }

                location ~ \.php$ {
                    include /etc/nginx/fastcgi.conf;
                    fastcgi_pass unix:/tmp/phpfpm.wiki.internal.zone.sock;
                    fastcgi_index index.php;
                }

                location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                    expires max;
                    log_not_found off;
                }

                location = /_.gif {
                    expires max;
                    empty_gif;
                }

                location /cache {
                    deny  all;
                }

                location /dumps {
                    root /var/www/wiki.internal.zone/htodocs/local;
                    autoindex on;
                }
        }

Atlant ★★★★★ ()
Ответ на: комментарий от Atlant

Как-то выглядит не очень. Я бы сделал иначе. Однако к проблеме это не относится.

Но ради прикола могу написать как бы я сделал. Если не лень, проверишь — а вдруг просрется.

Писать?

deep-purple ★★★★★ ()
Последнее исправление: deep-purple (всего исправлений: 1 )

оба сайта на php ? А версия php какая и какой оптимизатор/ускоритель используется?

На хабре давно описывали такой глюк связанный с оптимизатором php, но вот подробности уже не помню.

vel ★★★★★ ()
Последнее исправление: vel (всего исправлений: 1 )
Ответ на: комментарий от r0ck3r

куки в браузере? я не ВЭБ-програмист, посему как их вытащить из браузера без захода на сайт понятии не имею. P.S. да и вроде они есть в выписке из снифера

Atlant ★★★★★ ()
Последнее исправление: Atlant (всего исправлений: 1 )
Ответ на: комментарий от Atlant
server {

    listen 10.0.0.254:80;
    server_name wiki.internal.zone;

    access_log /var/log/nginx/wiki.internal.zone.access_log main;
    error_log /var/log/nginx/wiki.internal.zone.error_log info;

    deny all;
    allow 10.0.0.0/16;

    charset utf-8;
    client_max_body_size 5m;
    client_body_timeout 60;

    set $root_path '/var/www/wiki.internal.zone/htdocs';

    root $root_path;
    index index.php index.html index.htm default.html default.htm;

    location / {

        error_page 404 = @backend;

        if (!-f $request_filename) {
            return 404;
        }
        location /cache {
            return 404;
        }
        location ~ \.php$ {
            return 404;
        }

        location /_.gif {
            expires max;
            empty_gif;
        }
        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
            expires max;
            log_not_found off;
        }

        location /mirrors {
            autoindex on;
        }
        location /dumps {
            root $root_path/local;
            autoindex on;
        }

    }

    location @backend {
        fastcgi_pass unix:/tmp/phpfpm.wiki.internal.zone.sock;
        include /etc/nginx/fastcgi.conf;
        fastcgi_param SCRIPT_FILENAME $root_path/index.php;
        fastcgi_intercept_errors on;
    }

}

Вообще не гарантирую что вот щас возмет и взлетит, т.к. просто писал от руки и не проверял. Рассматривай это только как принципиальную схему взаимодействия локейшнов, а не как конечный вариант, я ведь копипастил некоторые твои куски.

deep-purple ★★★★★ ()
Ответ на: комментарий от Atlant

Если в хроме то там есть дев тулз, там есть вкладка про куки. Если фф, то ставь firebug в дополнениях, у тебя появится кнопка с жуком, и там тоже есть вкалдка про куки.

deep-purple ★★★★★ ()
Ответ на: комментарий от deep-purple

firefox с firebug стоит. Был просто отключен. Включил. Во вкладке сеть он на пару секунд показывает запрос с 302 ответом, а потом весь список только с ответами от dev.internal.zone. Я смотрел через встроенный отладчик, в нем список сохранялся и кука была 8c28eed4010e8e8e08b67714b96c261c=v9p0k4g673v3sq6pu5asa1vgf3

Atlant ★★★★★ ()
Ответ на: комментарий от Atlant

Одна и та же на отдельные сайты? Значит у тебя проблема в бекенде. Если только бекенд не ставит куку на ".internal.zone" т.е. на все поддомены она так же валидна.

deep-purple ★★★★★ ()
Последнее исправление: deep-purple (всего исправлений: 1 )
Ответ на: комментарий от deep-purple

не, куки на сайт wiki и на dev различные.
Я показывал куки на wiki.internal.zone
На dev.internal.zone там куки с ASP.NET связанные - ".ASPXANONYMOUS" и т.д.

Atlant ★★★★★ ()
Ответ на: комментарий от Atlant

Теперь я не понял, у тебя идет редирект с вики на дев без смены кук? Выбор и отправку существующих непротухших кук осуществляет браузер в соответствии с запрашиваемым доменом.

deep-purple ★★★★★ ()
Ответ на: комментарий от deep-purple

Со сменой. При первичном запросе wiki идет кука 8c28eed4010e8e8e08b67714b96c261c=.............
При получении указания 302 и перезапросе на «Location: http://dev.internal.zone/" идет кука для dev c .ASPXANONYMOUS=................

Atlant ★★★★★ ()
Последнее исправление: Atlant (всего исправлений: 1 )
Ответ на: комментарий от Atlant

На интерес: попробуй удалить куку 8c28eed4010e8e8e08b67714b96c261c для wiki.internal.zone

Если перестанет переадресовывать - то скорее всего дело в wiki, а не в веб-сервере

Мне кажется, что дело именно в ней

r0ck3r ★★★★★ ()
Последнее исправление: r0ck3r (всего исправлений: 1 )
Ответ на: комментарий от r0ck3r

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

Atlant ★★★★★ ()
Ответ на: комментарий от Atlant

в таком случае - однозначно смотри в сторону wiki.

Для проверки временно перенеси содержимое каталога с wiki на сервере в другое место и оставь каталог пустым. После этого открыв несколько раз сайт где должна быть wiki и не получив переадресации - убедишься, что проблема была именно в ней

r0ck3r ★★★★★ ()
Ответ на: комментарий от r0ck3r

перенеси содержимое каталога с wiki

Перенес, создал просто файл 1.txt (внутри «111»). Перезапустил nginx. Приватный режим firefox - и снова dev.
Запускаю IE - результат wiki.internal.zone/1.txt отображается.
Запускаю тупой

telnet wiki.internal.zone 80

пишу
GET http://wiki.internal.zone/1.txt

ответ
111

=))) я фигею малость....

Atlant ★★★★★ ()
Последнее исправление: Atlant (всего исправлений: 3 )
Ответ на: комментарий от Atlant

В общем есть некое подозрение на drweb не указанный в исходных условиях.
Запустил снова снифер на сервере nginx.
получаю что идет запрос, на на другой IP (nginx в нескольких подсетях) не на тот к которому привязан сайт. Соответственно он честно и докладывает что такого адреса нету и перенаправляет на текущий сервер по умолчанию.
Адрес wiki распознается не как IP допустимый(bind его выдает ПЕРВЫМ), а как IP_2 из другой подсети без доступа к wiki. А drweb-ский файервол похоже вмешивается в это дело и берет другой IP_2 и пытается достучатся - естественно его перекидывает на основной сайт.
Короче - баг ПОНЯТЕН и он в антивируснике. Осталось решить что делать...

Atlant ★★★★★ ()
Ответ на: комментарий от Atlant


Запускаю тупой
...
пишу
...
ответ
...


в том же фаербаге (да и в dev-tools от фф и хрома) есть такая фича в списке запросов 'Copy as curl' - готовая консольная команда со всеми куками, постами и т.д. позволит полностью повторить запрос посланный браузером

fjoe ()
Ответ на: комментарий от Atlant

на то что отвечает ASP.NET это просто в данный момент идет пересылка на другой сервер с виндой.

X-Powered-By: ASP.NET означает, что страничку (и редирект) сгенерировал asp.net

goingUp ★★★★★ ()
Ответ на: комментарий от r0ck3r

Допустим так, но почему тогда после очистки кук первый раз прогружается wiki как и положено?

вероятно попал на IP вместо IP_2 вот и корректно ответил.

Atlant ★★★★★ ()
Ответ на: комментарий от goingUp

А HTTP/1.1?

а я в классическом HTTP 1.0. Пока тоже работает -)

Atlant ★★★★★ ()
Ответ на: комментарий от fjoe

в том же фаербаге (да и в dev-tools от фф и хрома) есть такая фича в списке запросов 'Copy as curl' - готовая консольная команда со всеми куками, постами и т.д. позволит полностью повторить запрос посланный браузером

Я в курсе, только для данного момента это было излишне.
Да в принципе и натолкнуло на мысль об антивируснике

Atlant ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.