nginx перезаписывает фальшивые изображения в PHP [закрыто]

Работа над использованием nginx для обслуживания изображений.

static.foobar.com/UUID.jpg url будет фактически служить указателем на PHP-скрипт, который определяет, есть ли у вас разрешение на просмотр этого изображения (и если да, то обслуживайте его через PHP / X-Accel-Redirect).

DNS / nginx настроены правильно на поддомене, но я получаю 404. Вот мой текущий блок сервера:

server {
    listen x.x.x.x:80;

    server_name static.foobar.com;

    location ~ \.(gif|jpg|png) {
        internal;
        rewrite "^/([a-f0-9]{8})-([a-f0-9]{4})-4([a-f0-9]{3})-([a-f0-9]{4})-([a-f0-9]{12}).(gif|jpg|png)" /dir/photo.php?uuid=$1-$2-4$3-$4-$5 last;
    }
}

Мне интересно, заставляет ли присутствие gif | jpg | png nginx устанавливать mime -type как изображение, что вызывает конфликт при отправке сеанса в файл PHP. Может быть, в этом проблема? Что еще я могу сделать, чтобы помочь отладить это, или есть ли у кого-нибудь указатели, пожалуйста?

С уважением


Обновление: в конечном итоге проблема заключалась в том, что на моем сервере nginx php-fpm не поддерживается cpanel, поэтому моя конфигурация nginx вообще не могла запускать php. Я надеялся разгрузить обслуживание этих файлов через nginx, но, к сожалению, придется вернуться к использованию apache. Спасибо всем за ваше время и помощь.

-1
задан 30 March 2015 в 05:34
1 ответ

По крайней мере, одна проблема заключается в том, что вы используете ключевое слово internal внутри местоположения. Это означает, что он будет соответствовать только запросам, поступающим изнутри nginx, например, из других блоков location . Вы должны удалить это ключевое слово.

Ваши регулярные выражения также нуждаются в других исправлениях. Попробуйте этот блок местоположения :

location ~ \.(gif|jpg|png)$ {
    rewrite "^/([a-f0-9]{8})-([a-f0-9]{4})-4([a-f0-9]{3})-([a-f0-9]{4})-([a-f0-9]{12})\.(gif|jpg|png)$" /dir/photo.php?uuid=$1-$2-4$3-$4-$5 last;
}
1
ответ дан 5 December 2019 в 19:53

Теги

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