Ku dhawaad codsi kasta oo shabakada ah ee isticmaala sawirada, waxaa jira baahi loo qabo in la abuuro nuqullo yaryar oo sawiradan ah, inta badanna waxaa jira qaabab badan oo sawirro dheeraad ah.
Ku darista cabbirro cusub codsi jira waxay sidoo kale keentaa madax-xanuun. Markaa hawsha:
Ujeeddo
Aynu tilmaamno liiska shuruudaha:
- Samee sawiro dheeraad ah oo ah qaabab kasta oo duullimaad ah adoon soo bandhigin hawlqabad dheeraad ah codsiga wakhti kasta inta lagu jiro jiritaanka arjiga;
- Sawirro dheeri ah uma baahna in la sameeyo codsi kasta;
- Dami awoodda soo saarista sawirro dheeraad ah oo qaabab aan la cayimin.
Waxaan sharxi doonaa qodobka u dambeeya, sababtoo ah wax yar ayuu ka hor imanayaa qodobka koowaad. Haddii aan samayno jiilka sawir kasta oo furan, markaa waxaa jira suurtagalnimada weerar lagu qaado goobta iyadoo la abuurayo tiro badan oo codsiyo ah si loo cabbiro sawirka qaabab aan xadidnayn, sidaas darteed baylahdaani waxay u baahan tahay in la xiro.
qaabeynta rakibaadda nginx
Si loo xalliyo shuruudaha kor ku xusan waxaan u baahannahay qaybaha soo socda ee nginx modules:
ngx_http_image_filter_module - dib u habeynta sawirada;ngx_http_proxy_module - kaydinta;ngx_http_secure_link_module - si looga hortago spam;
Modules ngx_http_image_filter_module и ngx_http_secure_link_module laguma rakibin si caadi ah, markaa waa in lagu qeexaa heerka qaabaynta rakibidda nginx:
phoinix@phoinix-work:~/src/nginx-0.8.29
$ ./configure --with-http_secure_link_module --with-http_image_filter_module
qaabeynta nginx
Mid cusub ayaan ku darnaa qaabeynta martidayada goobta iyo cabbiraadaha kaydinta guud:
...
proxy_cache_path /www/myprojects/cache levels=1:2 keys_zone=image-preview:10m;
...
server {
...
location ~ ^/preview/([cir])/(.+) {
# Тип операции
set $oper $1;
# Параметры изображения и путь к файлу
set $remn $2;
# Проксируем на отдельный хост
proxy_pass http://myproject.ru:81/$oper/$remn;
proxy_intercept_errors on;
error_page 404 = /preview/404;
# Кеширование
proxy_cache image-preview;
proxy_cache_key "$host$document_uri";
# 200 ответы кешируем на 1 день
proxy_cache_valid 200 1d;
# остальные ответы кешируем на 1 минуту
proxy_cache_valid any 1m;
}
# Возвращаем ошибку
location = /preview/404 {
internal;
default_type image/gif;
alias /www/myprojects/image/noimage.gif;
}
...
}
...
Waxaan sidoo kale ku darnaa martigeliyaha cusub qaabeynta:
server {
server_name myproject.ru;
listen 81;
access_log /www/myproject.ru/logs/nginx.preview.access_log;
error_log /www/myproject.ru/logs/nginx.preview.error_log info;
# Указываем секретное слово для md5
secure_link_secret secret;
# Ошибки отправляем она отдельный location
error_page 403 404 415 500 502 503 504 = @404;
# location Для фильтра size
location ~ ^/i/[^/]+/(.+) {
# грязный хак от Игоря Сысоева *
alias /www/myproject.ru/images/$1;
try_files "" @404;
# Проверяем правильность ссылки и md5
if ($secure_link = "") { return 404; }
# Используем соответсвующий фильтр
image_filter size;
}
# По аналогии остальные location для других фильтров
location ~ ^/c/[^/]+/(d+|-)x(d+|-)/(.+) {
set $width $1;
set $height $2;
alias /www/myproject.ru/images/$3;
try_files "" @404;
if ($secure_link = "") { return 404; }
image_filter crop $width $height;
}
location ~ ^/r/[^/]+/(d+|-)x(d+|-)/(.+) {
set $width $1;
set $height $2;
alias /www/myproject.ru/images/$3;
try_files "" @404;
if ($secure_link = "") { return 404; }
image_filter resize $width $height;
}
location @404 { return 404; }
}
Natiijo ahaan, sawirro dheeraad ah ayaa lagu heli karaa iyadoo la adeegsanayo xiriiriyeyaasha soo socda:
myproject.ru/preview/i [md5] / [dariiqa_image]myproject.ru/preview/c [md5] / [cabbirka] / [dariiqa_image]myproject.ru/preview/r [md5] / [cabbirka] / [dariiqa_image]
* try_files - xasaasi u ah meelaha bannaan iyo jilayaasha Ruush, sidaas darteed waxaan ku qasbanaaday in aan la qabsado alias.
Isticmaal codsiga shabakada
Heerka codsiga shabakada, waxaad samayn kartaa nidaamka soo socda (Perl):
sub proxy_image {
use Digest::MD5 qw /md5_hex/;
my %params = @_;
my $filter = {
size => 'i',
resize => 'r',
crop => 'c'
}->{$params{filter}} || 'r';
my $path = ($filter ne 'i' ?
( $params{height} || '_' ) . 'x' . ( $params{width} || '_' ) . '/' :
()
) . $params{source};
my $md5 = md5_hex( $path . 'secret' );
$path = '/preview/' . $filter . '/' . $md5 . '/' . $path;
return $path;
}
my $preview_path = &proxy_image(
source => 'image1.jpg',
height => 100,
width => 100,
filter => 'resize'
);
Inkasta oo aan sidoo kale ku talin lahaa xisaabinta cabbirrada Falanqeynta.
Rake
Marka la tirtiro sawirka asalka ah, horudhacyada, si dabiici ah, lagama tirtiri doono khasnadda ilaa kaydinta la buriyo, iyo kiiskeena, horudhacyadu waxay jiri karaan maalin kadib tirtirka, laakiin tani waa wakhtiga ugu badan.
Source: www.habr.com