Задать вопрос
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 просмотров
Подписаться 2 Оценить 13 комментариев
Решения вопроса 3
slimus
@slimus
Symfony, Golang
nginx сначала использует правла без регулярок, скорее всего у вас отрабатывает первое правило.
как проверить:
вклчить debug логирование и посмотреть путь
как исправить:
включить второй локейшн в первый
Ответ написан
bigton
@bigton
Web-программист
это самый полный конфиг? что у вас реализовано для 404 ошибки, есть свой именованный location?
Ответ написан
dimasmagadan
@dimasmagadan Автор вопроса
Проблема оказалась на стороне хостера - не корректно настроили что-то в своей сети. Смог повторить такой же баг был и на других сайтах на их площадке.

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

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

Похожие вопросы
YCLIENTS Москва
от 350 000 до 400 000 ₽
Viletech Москва
от 70 000 до 120 000 ₽
Евразия Москва
от 200 000 ₽