dimasmagadan
@dimasmagadan

Откуда взялся цикличный редирект?

При попытке открыть страницу все работает штатно. Кроме некоторых файлов.
Часть статики отдает с редиректом.

Например, есть картинка
am49.ru/uploads/2016/05/am49.ru.f941d38af67781d48b...

При попытке ее показать на странице делает несколько редиректов. В итоге, адрес картинки получается такой
94.247.56.247/94.247.56.247/94.247.56.247/94.247.5...

Часть картинок, с этого же пути, отдает нормально, без редиректа
am49.ru/uploads/2016/05/am49.ru.f941d38af67781d48b...

От имени/маски имени файла баг не зависит: такая же проблема с
am49.ru/talk/style_images/ip.boardpr/logo4.jpg

У разных картинок может быть разное количество редиректов - где-то 2, где-то упирается в лимит браузера.

Конфиг для тестов оставлял вот такой, минимальный. Редирект не пропадал.
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include    /etc/nginx/mime.types;    
    index    index.html index.htm index.php;
    default_type application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"'
                      '$upstream_cache_status';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    send_timeout 300s;
    
    types_hash_max_size 2048;

    server_tokens off;

    server {
        listen       80 default_server;
        server_name  am49.ru;

        location / {

            proxy_redirect          off;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        Accept-Encoding "";
            client_max_body_size    328M;
            client_body_buffer_size 328k;
            proxy_connect_timeout   90;
            proxy_send_timeout      90;
            proxy_read_timeout      90;
            proxy_buffers           32 4k;

            proxy_set_header Host 'am49.ru';
            proxy_pass   http://127.0.0.1:8080;
        }

        location ~* \.(gif|jpg|jpeg|png|bmp|mp4|flv)$ {
            root    /home/auto.magadan.ru/html/;

            access_log   off;
            expires  max;
            add_header Last-Modified "";

            try_files $uri $uri/ =404;
        }
    }
}


Файл mime.types стандартный, тот, что nginx при установке сделал. Не менял.

nginx version: nginx/1.6.3

В nginx -V смотрел, как конфиг используется только один файл. Его и редактирую. Другие не подключаются.

В какую сторону копать?
  • Вопрос задан
  • 530 просмотров
Решения вопроса 3
slimus
@slimus
Symfony, Golang
nginx сначала использует правла без регулярок, скорее всего у вас отрабатывает первое правило.
как проверить:
вклчить debug логирование и посмотреть путь
как исправить:
включить второй локейшн в первый
Ответ написан
bigton
@bigton
Web-программист
это самый полный конфиг? что у вас реализовано для 404 ошибки, есть свой именованный location?
Ответ написан
dimasmagadan
@dimasmagadan Автор вопроса
Проблема оказалась на стороне хостера - не корректно настроили что-то в своей сети. Смог повторить такой же баг был и на других сайтах на их площадке.

Сейчас исправили.
Всем спасибо за советы.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы