Считаю до трех
С нами с 23.03.05
Сообщения: 12353
Рейтинг: 2918
|
Добавлено: 26/03/21 в 16:47 |
Задача такая - на сервере лежит папка с картинками, которую используют все домены (через альясы). В итоге имена картинок на всех доменах одинаковые (а также одинаковые пути). Можно ли как-то изменять имена для каждого домена?
Гугление никаких особых вариантов не дало.
Первое что в голову пришло - отдавать через php, но вариант так себе.
Если кто-то сталкивался с подобной задачей, то буду благодарен за подсказку хотя бы в какую сторону копать.
|
|
|
|
С нами с 12.05.18
Сообщения: 147
Рейтинг: 135
|
Добавлено: 27/03/21 в 00:54 |
Цитата: | Гугление никаких особых вариантов не дало. |
Очень странно
в location nginx можно использовать регулярные выражения, соотвественно делаешь что-то вроде:
Код: |
location ~ ^/images/(a-zA-Z0-9)/(?<filename>.*)$ {
alias /root/images/$filename;
}
|
на сайтах линки /images/porn/001.jpg, /images/sex/001.jpg будут вести в одно место. По аналогии можешь сделать с самим именем файла.
|
|
|
|
С нами с 29.11.14
Сообщения: 254
Рейтинг: 575
|
Добавлено: 27/03/21 в 08:47 |
если к директории картинок применяются другие директивы такие как location и то можно еще заюзать
rewrite ^/images/[^/]+/.*\.jpg$ /images/real/$1 last;
так как этот реврайт с ластом в конце не ломает try_files, а алиас может помешать остальным правилам
Последний раз редактировалось: xjam (27/03/21 в 09:03), всего редактировалось 1 раз
|
|
|
|
С нами с 29.11.14
Сообщения: 254
Рейтинг: 575
|
Добавлено: 27/03/21 в 09:00 |
Если нужно поменять названия файлов тоже, то из очевидных вариантов создать map с именами фейковых и реальных картинок, и реврайтить.
|
|
|
|
Считаю до трех
С нами с 23.03.05
Сообщения: 12353
Рейтинг: 2918
|
Добавлено: 27/03/21 в 13:23 |
Мне собственно имена файлов менять и нужно. Картинок порядка 1 миллиона, потому записывать таблицы вида староеимя=новоеимя не вариант.
|
|
|
|
С нами с 12.05.18
Сообщения: 147
Рейтинг: 135
|
Добавлено: 27/03/21 в 19:37 |
в nginx map так-же можно использовать regexp, так что не нужно миллион записей в ней делать, а всего лишь правила.
|
|
|
|
С нами с 12.05.18
Сообщения: 147
Рейтинг: 135
|
Добавлено: 28/03/21 в 04:50 |
Чет не спалось и для проверки своих слов решил протестить)
Запросы
/images/sex-001.jpg
/images/porn-001.jpg
/images/fuck-001.jpg
Показывают файл images/001.jpg
Это вариант с мапами nginx
Исходя из этого можешь регекспами построить мапы под себя.
Код: |
map $request_uri $real_image_name{
"~^(\/images\/sex-(?<img>(.*)))$" $img;
"~^(\/images\/porn-(?<img>(.*)))$" $img;
"~^(\/images\/fuck-(?<img>(.*)))$" $img;
default default.jpg;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
server_tokens off;
location ~ ^/images/(.*)\.jpg$ {
alias /var/www/images/$real_image_name;
}
}
|
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |