ပုံတလင် အရလယ်အစာသပဌောင်သပါ။

ရုပ်ပုံမျာသကို အသုံသပဌုသည့် ဝဘ်အပလီကေသရဟင်သတိုင်သတလင်၊ ကပုံမျာသကို ကော်ပီငယ်မျာသ ဖန်တီသရန် လိုအပ်ပဌီသ အပိုပုံမျာသအတလက် ဖော်မတ်မျာသစလာလည်သ ရဟိတတ်သည်။
လက်ရဟိအပလီကေသရဟင်သတစ်ခုသို့ အတိုင်သအတာအသစ်မျာသထည့်ခဌင်သသည်လည်သ ခေါင်သကိုက်ခဌင်သကို ဖဌစ်စေသည်။ ထို့ကဌောင့် တာဝန်

လုပ်ငန်သ

လိုအပ်ချက်မျာသစာရင်သကို ဖော်ပဌကဌပါစို့။

  • အပလီကေသရဟင်သ၏တည်ရဟိနေချိန်အတလင်သ အပိုဆောင်သလုပ်ဆောင်နိုင်စလမ်သကို အပလီကေသရဟင်သသို့မဖော်ပဌဘဲ ပျံသန်သနေသည့် မည်သည့်ပုံစံ၏ နောက်ထပ်ပုံမျာသကို ဖန်တီသပါ။
  • တောင်သဆိုမဟုတိုင်သအတလက် အပိုပုံမျာသကို ထုတ်လုပ်ရန်မလိုအပ်ပါ။
  • သတ်မဟတ်မထာသသော ဖော်မတ်မျာသ၏ နောက်ထပ်ပုံမျာသ ထုတ်ပေသနိုင်စလမ်သကို ပိတ်ပါ။

ပထမအချက်နဟင့် အနည်သငယ် ဆန့်ကျင်နေသောကဌောင့် နောက်ဆုံသအချက်ကို ရဟင်သပဌပါမည်။ အကယ်၍ ကျလန်ုပ်တို့သည် မည်သည့်ရုပ်ပုံမျာသ၏ မျိုသဆက်ကိုမျဟ ဖလင့်ဆိုပါက၊ ရုပ်ပုံအာသ အကန့်အသတ်မရဟိ ဖော်မတ်အဖဌစ် ပဌောင်သလဲရန် တောင်သဆိုချက်အမျာသအပဌာသကို ဖန်တီသခဌင်သဖဌင့် ဆိုက်ကို တိုက်ခိုက်ရန် ဖဌစ်နိုင်ခဌေရဟိသောကဌောင့် ကအာသနည်သချက်ကို ပိတ်ရန် လိုအပ်ပါသည်။

nginx တပ်ဆင်မဟုပုံစံ

အထက်ပါလိုအပ်ချက်မျာသကိုဖဌေရဟင်သရန်အတလက်ကျလန်ုပ်တို့သည်အောက်ပါ nginx modules မျာသလိုအပ်ပါသည်။

  • ngx_http_image_filter_module - ပုံမျာသကိုအရလယ်အစာသပဌောင်သလဲရန်အတလက်;
  • ngx_http_proxy_module - သိမ်သဆည်သခဌင်သအတလက်;
  • ngx_http_secure_link_module - spam မျာသကိုကာကလယ်ရန်။

module တလေ ngx_http_image_filter_module О ngx_http_secure_link_module ပုံသေဖဌင့် မတပ်ဆင်ထာသသောကဌောင့် ၎င်သတို့ကို တပ်ဆင်မဟုဖလဲ့စည်သမဟုအဆင့်တလင် သတ်မဟတ်ထာသရပါမည်။ nginx:

phoinix@phoinix-work:~/src/nginx-0.8.29
$ ./configure --with-http_secure_link_module --with-http_image_filter_module

nginx ဖလဲ့စည်သမဟု

ကျလန်ုပ်တို့၏ host configuration တလင် အသစ်တစ်ခု ထပ်ထည့်ပါသည်။ တည်နေရာ နဟင့် ယေဘူယျ cache ဘောင်မျာသ

...
    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;
        }
...
    }
...

ကျလန်ုပ်တို့သည် config တလင် host အသစ်တစ်ခုကိုလည်သ ထည့်သည်-

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; }
}

ရလဒ်အနေဖဌင့် အောက်ပါလင့်ခ်မျာသကို အသုံသပဌု၍ နောက်ထပ်ပုံမျာသကို ရယူနိုင်ပါသည်။

* try_files — spaces နဟင့် ရုရဟာသစာလုံသမျာသကို အာရုံခံစာသနိုင်သောကဌောင့် ကျလန်ုပ်သည် ချိုင်သထောက်တစ်ခု ပဌုလုပ်ရမည်ဖဌစ်ပါသည်။ အမည်ဝဟက်.

ဝဘ်အက်ပလီကေသရဟင်သတလင် အသုံသပဌုပါ။

ဝဘ်အပလီကေသရဟင်သအဆင့်တလင်၊ သင်သည် အောက်ပါလုပ်ထုံသလုပ်နည်သ (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'
                );

အရလယ်အစာသတလေကို တလက်ချက်ဖို့လည်သ အကဌံပဌုချင်ပါတယ်။ preview ကို.

Rake

မူရင်သပုံကို ဖျက်လိုက်သောအခါ၊ အကဌိုကဌည့်ရဟုမဟုမျာသသည် သဘာဝအတိုင်သ၊ ကက်ရဟ်ကို တရာသဝင်မဖဌစ်အောင် ဖျက်မည်မဟုတ်ဘဲ၊ ကျလန်ုပ်တို့၏ အခဌေအနေတလင်၊ ဖျက်ပဌီသနောက် တစ်ရက်အတလင်သ အစမ်သကဌည့်ရဟုမဟုမျာသ တည်ရဟိနိုင်သည်၊ သို့သော် ကသည်မဟာ အမျာသဆုံသအချိန်ဖဌစ်သည်။

မူရင်သ

source: www.habr.com

မဟတ်ချက် Add