Nginx+Lua+GraphicsMagick, реализация функции изменения размера изображений по требованию, поддерживает два режима [фиксированный размер, режим фиксированной высоты или ширины], поддерживает хранение файлов с использованием FastDFS.
github адрес: https://github.com/yanue/nginx-lua-GraphicsMagick
img.xxx.com (например /var/www/img)
|-- img1
| `-- 001
| `-- 001.jpg
|-- img2
| `-- notfound.jpg
|-- img3
| `-- 001
| `-- 001.jpg
thumb (например /tmp/thumb, можно изменить в конфигурационном файле)
`-- img1
`-- 001
|-- 001_200x160.jpg фиксированный размер
|-- 001_-100.jpg фиксированная высота
|-- 001_200-.jpg фиксированная ширина
http://img.xxx.com/xx/001/001.jpg
http://img.xxx.com/xx/001/001.jpg_100x100.jpg
(ширина 100, высота 100)http://img.xxx.com/xx/001/001.jpg_-100.jpg
(символ "-" указывает на автоматическую ширину, высота 100)http://img.xxx.com/xx/001/001.jpg_100-.jpg
(символ "-" указывает на автоматическую высоту, ширина 100)Процесс установки для CentOS6 описан в nginx+lua+GraphicsMagick установке
./configure --prefix=/usr/local/nginx \
--user=www \
--group=www \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--error-log-path=/opt/logs/nginx/error.log \
--http-log-path=/opt/logs/nginx/access.log \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_sub_module \
--with-http_flv_module \
--with-http_dav_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_addition_module \
--with-http_spdy_module \
--with-pcre \
--with-zlib=../zlib-1.2.8 \
--add-module=../nginx-http-concat \
--add-module=../lua-nginx-module \
--add-module=../ngx_devel_kit \
server{
listen 80
# установка переменной для миниатюры изображения
set $upload_path /opt/uploads;
set $img_original_root $upload_path;# исходная корневая директория;
set $img_thumbnail_root $upload_path/cache/thumb;
set $img_file $img_thumbnail_root$uri;
}
``````markdown
# Пример: /xx/xx/xx.jpg_100-.jpg или /xx/xx/xx.jpg_-100.jpg
location ~* ^(.+\.(jpg|jpeg|gif|png))_((\d+\-)|(\-\d+))\.(jpg|jpeg|gif|png)$ {
root $img_thumbnail_root; # корневая директория для обрезанных изображений
set $img_size $3;
}
если (!-f $img_file) { # если файл не существует
add_header X-Powered-By 'Nginx+Lua+GraphicsMagick By Yanue'; # заголовок для теста
add_header file-path $request_filename; # заголовок для теста
set $request_filepath $img_original_root$1; # полный путь к origin_img: /document_root/1.gif
set $img_size $3; # ширина или высота изображения в зависимости от uri
set $img_ext $2; # расширение файла
content_by_lua_file /etc/nginx/lua/autoSize.lua; # загрузка lua
}
```
```markdown
# Подобно: /xx/xx/xx.jpg_100x100.jpg
location ~* ^(.+\.(jpg|jpeg|gif|png))_(\d+)+x(\d+)+\.(jpg|jpeg|gif|png)$ {
root $img_thumbnail_root; # корневая директория для обрезанных изображений
}
``````markdown
if (!-f $img_file) { # если файл не существует
add_header X-Powered-By 'Nginx+Lua+GraphicsMagick By Yanue'; # заголовок для тестирования
add_header file-path $request_filename; # заголовок для тестирования
set $request_filepath $img_original_root$1; # путь к исходному изображению
set $img_width $3; # ширина изображения
set $img_height $4; # высота изображения
set $img_ext $5; # расширение файла
content_by_lua_file /etc/nginx/lua/cropSize.lua; # загрузка Lua
}
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
}
server{
listen Yöntem 80;
server_name xxx.com;
set $img_thumbnail_root /opt/fastdfs/thumb; # установка пути для миниатюр
set $img_file $img_thumbnail_root$uri; # путь к миниатюре
# подобно: /pic/M00/xx/xx/xx.jpg_100-.jpg или /pic/M00/xx/xx/xx.jpg_-100.jpg
location ~* ^(\/(\w+)(\/M00)(.+\.(jpg|jpeg|gif|png)))_((\d+\-)|(\-\d+))\.(jpg|jpeg|gif|png)$ {
root $img_thumbnail_root; # корневая директория для обрезанных изображений
set $fdfs_group_root /opt/fastdfs/$2/store0/data; # установка пути для группы fastdfs $2
}
``` if (!-f $img_file) { # если миниатюра не существует
add_header X-Powered-By 'Nginx+Lua+GraphicsMagick By Yanue'; # заголовок для тестирования
add_header file-path $request_filename; # заголовок для тестирования
set $request_filepath $fdfs_group_root$4; # полный путь к исходному изображению: /document_root/1.gif
set $img_size $6; # ширина или высота изображения в зависимости от URI: размер изображения, например "-100" или "100-", "-" означает автоматический размер
set $img_ext $5; # расширение файла
content_by_lua_file /etc/nginx/lua/autoSize.lua; # загрузка Lua для автоматического изменения ширины или высоты
}
}```markdown
# подобно: /pic/M00/xx/xx/xx.jpg_200x100.jpg
location ~* ^(\/(\w+)(\/M00)(.+\.(jpg|jpeg|gif|png))_(\d+)+x(\d+)+\.(jpg|jpeg|gif|png))$ {
root $img_thumbnail_root; # корневая директория для обрезанных изображений
set $fdfs_group_root /opt/fastdfs/$2/store0/data; # установка пути для группы fastdfs $2
``````markdown
if (!-f $img_file) { # если файл миниатюры не существует
add_header X-Powered-By 'Nginx+Lua+GraphicsMagick By Yanue'; # заголовок для тестирования
add_header file-path $request_filename; # заголовок для тестирования
set $request_filepath $fdfs_group_root$4; # путь к реальному файлу
set $img_width $6; # ширина изображения
set $img_height $7; # высота изображения
set $img_ext $5; # расширение файла
content_by_lua_file /etc/nginx/lua/cropSize.lua; # загрузка Lua файла cropSize
}
}
location /pic/M00 {
alias /opt/fastdfs/pic/store0/data;
ngx_fastdfs_module;
}
location /chat/M00 {
alias /opt/fastdfs/chat/store0/data;
ngx_fastdfs_module;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
}
Ссылка: https://github.com/hopesoft/nginx-lua-image-module
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )