ক্যাগিং বিপরীত প্রক্সি হিসাবে কীভাবে এনগিনেক্স সেট আপ করবেন?


143

আমি সম্প্রতি শুনেছি যে এনগিনেক্স তার বিপরীত প্রক্সি বৈশিষ্ট্যে ক্যাশে যুক্ত করেছে। আমি আশেপাশে তাকালাম তবে এ সম্পর্কে তেমন কোনও তথ্য পাইনি।

আমি অ্যাপাচি / জ্যাঙ্গোর সামনে ক্যাগিং বিপরীত প্রক্সি হিসাবে এনগিনেক্স সেটআপ করতে চাই: অ্যাপাচে কিছু (তবে সমস্ত নয়) ডায়নামিক পৃষ্ঠাগুলির জন্য এনগিনেক্স প্রক্সির অনুরোধ রাখতে, উত্পন্ন পৃষ্ঠাগুলি ক্যাশে করুন এবং ক্যাশে থেকে সেই পৃষ্ঠাগুলির জন্য পরবর্তী অনুরোধগুলি পরিবেশন করুন।

আদর্শভাবে আমি 2 উপায়ে ক্যাশে অবৈধ করতে চাই:

  1. ক্যাশেড আইটেমটিতে একটি মেয়াদোত্তীকরণের তারিখ সেট করুন
  2. স্পষ্টভাবে ক্যাশেড আইটেমটি অবৈধ করতে। উদাহরণস্বরূপ, যদি আমার জ্যাঙ্গো ব্যাকএন্ডে কিছু ডেটা আপডেট করা থাকে, তবে আমি Nginx কে আক্রান্ত পৃষ্ঠাগুলির ক্যাশে অবৈধ করতে বলি

Nginx এটি করতে সেট করা সম্ভব? কিভাবে?


পরীক্ষিত নয়, তবে gumroad.com/l/ngx_purge থেকে : "এনজিএক্স_পুর্জ হ'ল এনগিনেক্সের জন্য একটি খাঁটি লুয়া মডিউল যা ব্যবহারকারীকে এনজিন্স ক্যাশে থেকে মুছে ফেলতে দেয়" "
জাইমে হাবলুটজেল

উত্তর:


97

আমি মনে করি না ক্যাশেড আইটেমগুলি স্পষ্টভাবে অবৈধ করার কোনও উপায় আছে তবে বাকী কীভাবে করা যায় তার একটি উদাহরণ এখানে। আপডেট: পাইওটারের অন্য উত্তরে উল্লিখিত হিসাবে, আপনি ব্যবহার করতে পারেন এমন একটি ক্যাশে শুদ্ধি মডিউল রয়েছে । আপনি এনগিনেক্সের প্রক্সি_ক্যাচি_বাইপাস ব্যবহার করে ক্যাশেড আইটেমটি রিফ্রেশ করতে বাধ্য করতে পারেন - আরও তথ্যের জন্য চেরিয়ান এর উত্তর দেখুন।

এই কনফিগারেশনে, ক্যাচ করা হয়নি এমন আইটেমগুলি উদাহরণ.net থেকে পুনরুদ্ধার করা হবে এবং সংরক্ষণ করা হবে। ক্যাশেড সংস্করণগুলি ভবিষ্যতের ক্লায়েন্টদের কাছে পরিবেশন করা হবে যতক্ষণ না সেগুলি আর বৈধ হয় (60 মিনিট)।

আপনার ক্যাশে-নিয়ন্ত্রণ এবং মেয়াদোত্তীর্ণ HTTP শিরোনামগুলি সম্মানিত হবে, সুতরাং আপনি যদি স্পষ্টভাবে একটি মেয়াদোত্তীকরণের তারিখ নির্ধারণ করতে চান তবে আপনি যা যা প্রক্স করছেন তাতে সঠিক শিরোনাম সেট করে আপনি এটি করতে পারেন।

অনেকগুলি প্যারামিটার রয়েছে যা আপনি টিউন করতে পারেন - বিভিন্ন সেটিংস / প্যারামিটারের অর্থ সম্পর্কিত বিশদ সহ এগুলি সম্পর্কে আরও তথ্যের জন্য এনজিনেক্স প্রক্সি মডিউল ডকুমেন্টেশন দেখুন: http://nginx.org/r/proxy_cache_path

http {
  proxy_cache_path  /var/www/cache levels=1:2 keys_zone=my-cache:8m max_size=1000m inactive=600m;
  proxy_temp_path /var/www/cache/tmp; 


  server {
    location / {
      proxy_pass http://example.net;
      proxy_cache my-cache;
      proxy_cache_valid  200 302  60m;
      proxy_cache_valid  404      1m;
    }
  }
}

7
20k / req / s নেই এমন নতুন অ্যাপ্লিকেশনগুলির জন্য এটি একটি যুক্তিসঙ্গত প্রথম পদক্ষেপ।

5
@ ব্যারি দ্বিতীয় স্টেপ কি হবে?
জর্জেন পল

42
@ লেজিট - আমি জানি না, তবে traditionতিহ্যগতভাবে শেষ পদক্ষেপটি "লাভ" :-)
স্টিফেন সি

দুঃখের বিষয়, এটি nginx 1.11 নিয়ে কাজ করে না। যেহেতু সর্বশেষ আপডেটটি প্রায় 3 বছর আগে ছিল তাই দেখে মনে হচ্ছে এটি আর সমাধান নয়।
izogfif

এর inactive=600mঅর্থ কী? inactiveধরুন কি সময় হবে না ? `[inactive=time]
নেভারএন্ডিংকিউ

47

আপনি ক্যাশেড পৃষ্ঠাগুলি বিশেষত অবৈধ করতে পারেন

proxy_cache_bypass       

বলুন আপনি কোনও পৃষ্ঠা ক্যাশে করতে চান, এইভাবে ক্যাশে সেট করুন

location = /pageid {
  proxy_pass http://localhost:82;
  proxy_set_header   Host             $host;
  proxy_set_header   X-Real-IP        $remote_addr;
  proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
  proxy_ignore_headers Set-Cookie; 
  proxy_ignore_headers Cache-Control; 
  proxy_cache_bypass        $http_secret_header;
  add_header X-Cache-Status $upstream_cache_status;
}

এখন, আপনি যখন সেই পৃষ্ঠাটি অকার্যকর করতে চান এবং আবার ক্যাশে করুন

শিরোনাম সহ একটি গোপন কার্ল কল করুন

curl "www.site.com/pageid" -s -I -H "secret_header:true" 

এটি অবৈধ এবং ক্যাশে করবে।

Nginx 0.7 থেকে কাজ করে।

যুক্ত বোনাস হিসাবে add_header X-Cache-Statusপৃষ্ঠাটি ক্যাশে থেকে এসেছে কিনা তা যাচাই করতে ব্যবহার করা যেতে পারে।


এটি কেবল ক্যাশেড পৃষ্ঠাগুলি আপডেট করতে পারে যখন নতুন পৃষ্ঠাটিও ক্যাশেযোগ্য হয়। যদি আপনি কোনও পৃষ্ঠা সরিয়ে ফেলে থাকেন (404 বা অন্যান্য ত্রুটিগুলি এখন ব্যাকএন্ড দ্বারা পরিবেশন করা হয়), পৃষ্ঠাটি এখন একটি সেট-কুকি বা "সামগ্রী-নিয়ন্ত্রণ: ব্যক্তিগত" শিরোনাম প্রেরণ করে, ক্যাশেড সামগ্রীটি "অবৈধ" হবে না।
rbu

36

আমি আপনাকে বার্নিশ চেষ্টা করে দেখুন। বার্নিশ বিশেষত বিপরীত প্রক্সি ক্যাশে হিসাবে ডিজাইন করা হয়েছে। এটি উত্স সার্ভার থেকে আপনার প্রেরিত সমস্ত ক্যাশে নিয়ন্ত্রণ শিরোনামকে সম্মান জানাবে, যা আপনার প্রথম অনুরোধটি সন্তুষ্ট করে।

আপনার দ্বিতীয় অনুরোধের জন্য, স্পষ্টত অবৈধ। আমার দৃ strong় সুপারিশটি হ'ল ফাইলটির নাম পরিবর্তন করে বা কোয়েরি স্ট্রিং ক্যাশে বুস্টারের কোনও ফর্ম ব্যবহার করে আপনি যে সংস্থানটি অবৈধ করতে চান তার url এর নাম পরিবর্তন করা। বার্নিশের একটি PURGEঅপারেশন রয়েছে যা ওয়ার্নিশের ক্যাশে থেকে সংস্থানটি সরিয়ে ফেলবে, তবে এটি আপনাকে এবং ব্যবহারকারীর মধ্যে থাকা অন্য কোনও ক্যাশে নিয়ন্ত্রণ দেয় না you যেমন আপনি বলেছেন যে আপনি কোনও উত্স স্পষ্টভাবে মুছে ফেলতে চান, তবে মানক HTTP নিয়ন্ত্রণ শিরোনাম আপনাকে সহায়তা করবে না। সেক্ষেত্রে কোনও রিসোর্সের ক্যাচিংকে পরাস্ত করার সবচেয়ে বোকা উপায় হ'ল এর নাম পরিবর্তন করা।


"ফাইলটির নাম পরিবর্তন করে বা কোয়েরি স্ট্রিং ক্যাশে বুস্টারের কোনও ফর্ম ব্যবহার করে" আপনি কী বোঝাতে চেয়েছেন? আমি নিশ্চিত না যে আমি পুরসের মতো কোনও অপারেশন ব্যবহার করা কেন ভাল ধারণা নয় understand
ধারাবাহিকতা

5
বার্নিশ জন্য +1। কাজের জন্য সঠিক সরঞ্জামগুলি ব্যবহার করা সর্বদা আরও ভাল।
টম ও'কনোর

4
@ নীচ: পারফরম্যান্স এবং বহুমুখীতার ক্ষেত্রগুলিতে বার্নিশ স্পর্শ করার প্রায় কোনও আশা নেই। এটিকে অন্যতম শীর্ষস্থানীয় ফ্রিবিএসডি কার্নেল বিকাশকারী এবং ইউরোপ ভিত্তিক একটি উত্সর্গীকৃত দল সমর্থন করে। বার্নিশ টুইটার, হিরকু এবং আরও অনেক কিছুতে প্রযোজনায় রয়েছেন।

2
ক্যাশে-বাস্টারটির সহজতম উদাহরণ হ'ল স্ট্যাটিক রিসোর্সে কোয়েরি স্ট্রিংয়ের একটি সংস্করণ নম্বর যুক্ত করা, সুতরাং স্টাইল। আপনি যখন ফাইলটির নতুন সংস্করণটি ধাক্কা দিতে চান তবে আপনি উত্সটির ইউআরএলটি স্টাইল। CSS এ পরিবর্তন করবেন? 124 এবং এখন ক্যাশেগুলি পৃথকভাবে ক্যাশে হওয়ার জন্য সম্পূর্ণ নতুন সম্পদ হিসাবে বেছে নেবে। অ্যাপাচি যে কোনও ক্যোয়ারী স্ট্রিং সংযুক্ত করে ফাইল স্টাইল.এসএস ফাইল পরিবেশন করবে, সুতরাং প্রকৃত ফাইলটিতে কোনও পরিবর্তন প্রয়োজন হবে না।
chmac

3
যদি সম্ভব হয় তবে ফাইলের নামেই ক্যাশে বুস্টারটি রাখা ভাল, যেমন style.v123.cssকিছু ক্যাশে যে কোনও ক্যোয়ারী স্ট্রিং রয়েছে এমন অনুরোধগুলি ক্যাশে করবে না।
নোহ ম্যাকিলারথ

8

নির্বাচিত পৃষ্ঠাগুলিকে অবৈধ করার জন্য আপনি nginx-0.8.x এর জন্য "ক্যাশে_পুর্জ" প্যাচ ব্যবহার করতে পারেন যা আপনি যা চান তা সুনির্দিষ্টভাবে করে;)

এটি এখানে উপলব্ধ ।


8

বেশিরভাগ ক্যাশিং সরঞ্জাম (সিট্রিক্স) একটি জোর-রিফ্রেশ (Ctrl + r) কে ক্যাশেড পৃষ্ঠাটি পুনরায় তৈরি করতে দেয়।

এনজিএনএক্সে অনুরূপ কিছু করার জন্য আমি এখানে একটি কৌশল পেয়েছি।

server  {
        # Other settings
        proxy_pass_header       Set-Cookie; # I want to cache logged-in users
        proxy_ignore_headers    X-Accel-Redirect;
        proxy_ignore_headers    X-Accel-Expires Expires Cache-Control;
        if ($http_cache_control ~ "max-age=0") {set $eac 1;}
        proxy_cache_bypass $eac;
}

এটি ধরে নেওয়া হয় যে আপনি যখন আপনার ব্রাউজারে একটি Ctrl + r করেন, ক্যাশে-নিয়ন্ত্রণ শিরোনামটির অনুরোধে সর্বাধিক বয়স = 0 থাকে। আমি জানি ক্রোম এটি করে তবে আমি অন্যান্য ব্রাউজারগুলিতে চেষ্টা করি নি। আরও শিরোনাম ক্ষেত্র যুক্ত করা সহজ হতে পারে, আরও যোগ করে যদি $eacভেরিয়েবলটি 1 এ সেট করে ।


5

এনজিঙ্ক্সে ক্যাচিং বেশ নতুন ফাংশন (এবং এখনকার পক্ষে এত ভাল ডকুমেন্টেড নয়) তবে উত্পাদন ক্ষেত্রে এটি যথেষ্ট স্থিতিশীল।


4

আমি বিশ্বাস করি NginxHttpProxyModule HTTP অনুরোধগুলি সক্ষম করতে সক্ষম। যে নির্দেশাবলী দিয়ে শুরু হচ্ছে তা সন্ধান করুন:

proxy_cache

হ্যাঁ, এই জাতীয় নির্দেশের মাধ্যমে ক্যাশে আচরণ নিয়ন্ত্রণ করা সম্ভব:

proxy_cache_valid

3

আপনি এটিতে ডক্সটি খুঁজে পাচ্ছেন না তার উপর ভিত্তি করে, আমি এটির প্রযোজনায় নির্ভর করার বিষয়ে কিছুটা সতর্ক থাকব। আপনি কি বার্নিশ বিবেচনা করেছেন? এটি আমার "বিপরীত প্রক্সিগুলির এনগিনেক্স", ছোট, লাইটওয়েট, একটি কাজ করা এবং এটি ভালভাবে করা।


এই ডকুমেন্টেশনটি এখানে: wiki.nginx.org/NginxHttpProxyModule#proxy_cache
rmalayter

2

আপনি যদি নিজের অ্যাপ্লিকেশনটিতে ইটি্যাগগুলি ব্যবহার করেন এবং এর সামনে এনজিনেক্স রাখেন তবে এটি আপনার জন্য মেয়াদোত্তীর্ণতার যত্ন নেবে, কারণ ইটাগ পরিবর্তন হলে এটি ক্যাশেটিকে অবৈধ করে দেবে।


সত্যি? এটি দেখে মনে হচ্ছে এনগনিক্স ইটাগের সাথে মেলে এবং কোনও আপডেটেড ইটাগ আছে কিনা তা খুঁজে পাওয়ার জন্য অ্যাপ্লিকেশনটির সাথে কখনও কথা হয় না।
জন নাগলে

2

আপনি একাধিক নির্দেশনা / পরামিতি দিয়ে এনগিনেক্সের ক্যাশে সমাপ্তি নিয়ন্ত্রণ করতে পারেন:

  • proxy_cache_valid 200 302 10m;
  • নীচে HTTP শিরোনামগুলির মধ্যে একটি যুক্ত করুন (অগ্রাধিকার গুরুত্বপূর্ণ - আমার ব্লগ পোস্টটি দেখুন ):
    • Expires
    • Cache-Control
    • X-Accel-Expires
  • inactiveমাপদণ্ড proxy_cache_pathনির্দেশ:

    proxy_cache_path /data/nginx/cache keys_zone=one:10m inactive=60m;

আপনি যদি এনগিনেক্স ক্যাশে সম্পর্কে আরও জানতে চান তবে আমি আমার ব্লগ পোস্টটি সুপারিশ করছি

এই বৈশিষ্ট্যটি কেবল এনগিনেক্স প্লাসে (এনগিনেক্সের বাণিজ্যিক সংস্করণ) বিদ্যমান থাকায় শুদ্ধকরণ বিষয়টি সত্যই আকর্ষণীয়। আমি সত্যিই @ স্যান্ডি-ওয়ালেস উত্তরটি পছন্দ করি। তবে অন্যান্য সম্ভাবনাগুলিও রয়েছে যেমন এনজিএক্স_কাছে_পুর্জ মডিউল

ম্যানুয়ালি ক্যাশেড ফাইলটি সরিয়ে আপনি সবচেয়ে সহজ কাজটি করতে পারেন:

  • আপনার হ্যাশ কী তৈরি করুন:

    echo -n ‘httpczerasz.com/time.php’ | md5sum
    
  • ফাইল সিস্টেম থেকে ফাইলটি সরান:

    rm /data/nginx/cache/1/27/2bba799df783554d8402137ca199a271
    

1

ভবিষ্যতের দর্শনার্থীদের জন্য: ইতোমধ্যে এনগিনেক্স বিপরীত প্রক্সি ক্যাচ ইন্টিগ্রেটেড করেছে এবং ডক্সটি এখানে উপলব্ধ:

সিনট্যাক্স: প্রক্সি_ ক্যাশে অঞ্চল | বন্ধ;

ডিফল্ট: প্রক্সি_ক্যাচ বন্ধ;

প্রসঙ্গ: HTTP, সার্ভার, অবস্থান

ক্যাচিংয়ের জন্য ব্যবহৃত একটি ভাগ করা মেমরি অঞ্চল নির্ধারণ করে। একই অঞ্চলটি বেশ কয়েকটি জায়গায় ব্যবহার করা যেতে পারে। প্যারামিটার মানটিতে ভেরিয়েবল (1.7.9) থাকতে পারে। অফ প্যারামিটারটি পূর্ববর্তী কনফিগারেশন স্তর থেকে উত্তরাধিকার সূত্রে ক্যাশে অক্ষম করে।


হাই তারিক, প্রশ্নটি কী অর্জন করা উচিত তা সম্পর্কে খুব নির্দিষ্ট ছিল এবং এটি 'কেবল ক্যাশে সক্ষম করুন' এর কিছুটা বাইরে beyond
এসডমিন

0
fastcgi_cache_path / opt / nginx-cache স্তর = 2: 2 কী_জোন = img: 50 মি;

    অবস্থান / img /
        fastcgi_pass $ ব্যাকএন্ড;
        fcgi_params অন্তর্ভুক্ত;
        fastcgi_intercep_erferences বন্ধ;   
        fastcgi_cache_key $ server_addr $ অনুরোধ_রি;       
        fastcgi_cache img;
        fastcgi_cache_uthor যে কোনও 1 মি;
        ফাস্টসিজি_হাইড_হেডার সেট-কুকি;
    }

এটি / img / অবস্থানের জন্য ক্যাশে তৈরি করে। এটি / অপ্ট / এনগিনেক্স-ক্যাশে রয়েছে। অবজেক্টগুলি 1 মিনিটের জন্য ক্যাশে করা হয়।

আপনি যে কোনও পরিবর্তে বিভিন্ন প্রতিক্রিয়া কোড লিখতে পারেন।

এখন আপনি নির্বাচিত পৃষ্ঠাগুলির জন্য ক্যাশে অবৈধ করতে পারবেন না। হয়তো 0.8.x এ এটি সম্ভব হবে।


আসল প্রশ্নটি ছিল এনপিক্সের সামনে এনগিনেক্স ব্যবহারের বিষয়ে, এনজিনেক্স দ্বারা পরিচালিত ফাস্টসিগি অ্যাপ্লিকেশনের সামনে নয়।
গ্রাহাম ডাম্পলটন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.