LINUX.ORG.RU
ФорумAdmin

Как nginx заставить вместо отдачи файла исполнять скрипт?

 


1

2

приветствую о глубокоуважаемый олл.
Стоит задача - отдавать картинки вордпресса с водяными знаками.
Плагины это хорошо, но мне ни один не понравился - к тому же есть вариант решения через php скрипт. Скажем есть картинка:

http://wp.z0ne.ru/wp-content/uploads/2015/02/14-1o.png

Есть скрипт watermark.php отдающий как надо:

http://silver-city-penza.z0ne.ru/watermark.php?img=wp-content/uploads/2015/02...

Нужно банально заставить nginx при запросе картинки исполнять скрипт. С апачем всё примитивно а с nginx так и не справился.
В конфиге vhost для location / добавил:

rewrite ^/(.*)wp-content/uploads/(.*(jpg|jpeg|gif|png))$ /$1watermark.php?img=wp-content/uploads/$2;

Однако как видите при запросе картинки она отдается как есть.
Где я не прав?

★★

1. Я бы сделал как-то так:

server {
    ...
    rewrite ^/(.*)wp-content/uploads/(.*(jpg|jpeg|gif|png))$ /$1watermark.php?img=wp-content/uploads/$2 last
    ...
}

2. (.*(jpg|jpeg|gif|png)) - не уверен, что это корректный синтаксис. Точно работает?

3. Включи уже Debug наконец. ;) Там он пишет какой rewrite сработал.

d2 ()

Вставляешь на все картинки свой водяной знак и отдаёшь их нормально, как раньше.

Deleted ()

В nginx есть модуль для обработки изображений, можно использовать его.
Или модифицировать сами картинки скриптом (только не забыть сохранить оригинал, может понадобиться).
Но лучше вообще не страдать подобной чушью.

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

Copyright мать его. Пусть отменят!

Но лучше вообще не страдать подобной чушью.

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

Мне скажут: «не аффтор ты» - но я за отмену копирайта.
Пусть готовый продукт будет защищен, но защиту идеи отменить.
Идея может прийти кому угодно и нельзя у него отнимать право реализовать свою идею в своём продукте.

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

Чтобы "пометить".

Зачем портить изображение водяными знаками?

Затем чтобы «пометить». Метку конечно можно и свести и отрезать - но это будет уже осознанно.

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

Лениво ручками в сотни картинок это вставлять.

Вставляешь на все картинки свой водяной знак и отдаёшь их нормально, как раньше.

Этим кто то должен заниматься. Кто?
Все отмажутся и на меня эту работу повесят...

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

Спасибо добрый человек.

3. Включи уже Debug наконец. ;) Там он пишет какой rewrite сработал.

В location / она не работала.
Сначала я вынес rewrite из location / и поставил перед первым location.
Заработало, но подумал что это было некорректное решение.
Поставил в конец: location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$

Мой финальный конфиг:
/etc/nginx/fastpanel-sites/[server].conf:

server {
listen W.X.Y.Z:80;
server_name server.com;
error_page 404 = @fallback;


location ~* ^/(webmail/|phpmyadmin/|pgadmin/) {
proxy_pass http://127.0.0.1:8080;
proxy_redirect http://127.0.0.1:8080/ /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect http://127.0.0.1:8080/ /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
root /var/www/admin/www/silver-city-penza.ru/;
access_log /var/www/admin/logs/silver-city-penza.ru.access.log;
rewrite ^/(.*)wp-content/uploads/(.*(jpg|jpeg|gif|png))$ /$1watermark.php?img=wp-content/uploads/$2;
}
location @fallback {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}

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

Пусть при загрузке добавляется.

Да есть масса плагинов. Задолбался я их тестить.
Они водяной знак или в центр пихают или с отступом от левого и нижнего краев. Вид мне не понравился ни в одном из тестированных. Какие то имели массу настроек но не работали. В итоге вернулся к этому скрипту который нашел давно но не использовал не справившись с nginx. Здесь мне помогли с ним справиться. Теперь картинки честно отдаются с логотипом. Есть конечно и минусы - оно водяной знак ставит «НА ВСЁ» а скажем плагины позволяют отключать его на миниатюрах.
В общем начало положено и этот вариант отключается комментированием ОДНОЙ строчки. Всегда можно вернуться и к плагинам и к ручным водяным знакам.

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

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

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

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

И? Затем скриптом всё дерево бодяжить водяными знаками? При этом еще учитывать и не бодяжить то что уже разбодяжено...
Столько геморроя... идеальным я вижу пока лишь наложение логотипа через плагин к WordPress но пока не подобрал то что меня устроит на 100%. Сейчас выход в php скрипте размером 2401. Кладёт на лету... На всё...

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

Так плагин WP, или другая какая автоматика тоже будет класть водяной знак на всё, даже на то на чём он уже есть. Вопрос в том будет-ли тупая автоматика работать один раз для каждой картинки, или при каждом обращении к картинке.

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

Так плагин WP, или другая какая автоматика тоже будет класть водяной знак на всё, даже на то на чём он уже есть. Вопрос в том будет-ли тупая автоматика работать один раз для каждой картинки, или при каждом обращении к картинке.

Пока сервер справляется и исходные файлы чисты. Вот когда логотип устаканится и нагрузка появится - тогда и буду думать про многоразовую автоматику.

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