কিছু নির্দিষ্ট আইপি-তে আপনার ওয়েবসাইটের অ্যাক্সেস সীমাবদ্ধ করা একটি সাধারণ প্রয়োজন। এই পোস্টে, আমি দেখাব কিভাবে এজ কম্পিউটিং ব্যবহার করে একটি আইপি অনুমতি/অস্বীকার তালিকা বাস্তবায়ন করা যায়। আমাকে প্রথমে ক্লাউডফ্লেয়ার ওয়ার্কারদের সাথে পরিচয় করিয়ে দিতে দিন।
ক্লাউডফ্লেয়ার কর্মী
ক্লাউডফ্লেয়ার কর্মীরা সাম্প্রতিক বছরগুলিতে বেশ জনপ্রিয় প্রযুক্তি। এটি 2017 সালে সর্বজনীনভাবে উপলব্ধ হয় এবং 2019 সালে Cloudflare KV স্টোরেজ সর্বজনীনভাবে উপলব্ধ হয়৷
ক্লাউডফ্লেয়ার কর্মীদের বা কেভি স্টোরেজের খুব গভীর বিবরণে না গিয়ে, আমি সেগুলিকে সংক্ষেপে ব্যাখ্যা করব৷ ক্লাউডফ্লেয়ার কর্মীদের সাথে আপনি যেকোন HTTP অনুরোধ প্রান্ত স্তরে বাধা দিতে পারেন, আপনি আপনার কোড স্নিপেটগুলি চালাতে পারেন এবং অনুরোধ/প্রতিক্রিয়া ম্যানিপুলেট করতে পারেন৷ এছাড়াও আপনি কেভি স্টোরেজ ব্যবহার করতে পারেন৷ ক্লাউডফ্লেয়ার ওয়ার্কারদের মধ্যে স্থানীয়ভাবে উপলব্ধ একটি অভিধান তৈরি/পাওয়ার জন্য। আপনি দ্রুত খেলার মাঠের পরিবেশ চেষ্টা করে দেখতে পারেন, এটি বেশ সহজ এবং 1-ক্লিক পরীক্ষার পরিবেশ।
ক্লাউডফ্লেয়ার কেভি স্টোরেজ ছাড়াও, একজন বিকাশকারী হিসাবে আপনার আরও উন্নত ডেটা স্ট্রাকচারের প্রয়োজন হতে পারে। এছাড়াও আপনি বাইরে থেকে কেভি স্টোরেজ অ্যাক্সেস করতে চাইতে পারেন (যেমন ব্যাকএন্ড বা একটি API বা SDK ক্লায়েন্ট থেকে)। তাই সম্প্রতি আমরা REST Api Upstash সক্ষম করেছি।
এখন আপনি ব্যবহার করে আপনার Upstash Redis ডাটাবেস অ্যাক্সেস করতে পারেন:
- ক্লাউডফ্লেয়ার ওয়ার্কারদের মধ্যে আপস্ট্যাশ রেস্ট এপিআই
- আপনার কমান্ড লাইন টার্মিনালে redis-cli
- যে কোনো redis ক্লায়েন্ট সেই নির্দিষ্ট প্রোগ্রামিং ভাষায়
অনুগ্রহ করে আপনার connect
এ ক্লিক করুন কিছু নমুনা কোড স্নিপেট এবং নমুনা কমান্ডের জন্য আপনার ডাটাবেস বিবরণ পৃষ্ঠায় বোতাম।
আসুন Cloudflare কর্মীদের ব্যবহার করে একটি ছোট অ্যাপ্লিকেশন তৈরি করি এবং Upstash Redis Rest API একসাথে অন্বেষণ করি।
অ্যাপ্লিকেশন
সত্যের উৎস হিসেবে Redis ব্যবহার করে ক্লাউডফ্লেয়ার কর্মীর IP অনুমতি/অস্বীকার করুন৷
পূর্বশর্ত
- একটি সার্ভারহীন রেডিস ডেটাবেস (আপনি আপস্ট্যাশ কনসোল থেকে একটি তৈরি করতে পারেন)
- একটি Cloudflare অ্যাকাউন্ট অথবা আপনি CF খেলার মাঠ ব্যবহার করতে পারেন
- মূল জাভাস্ক্রিপ্ট জ্ঞান
- ক্লাউডফ্লেয়ার কর্মীদের প্রাথমিক জ্ঞান
:::note গ্লোবাল ডাটাবেস নির্বাচন করুন Upstash ডাটাবেস তৈরি করার সময়। গ্লোবাল ডাটাবেস প্রান্ত ফাংশন থেকে লেটেন্সি কমাতে একাধিক অঞ্চলে ডেটা প্রতিলিপি করে।:::
আসুন একটি ক্লাউডফ্লেয়ার কর্মী তৈরি করি এবং অনুরোধটি আটকাই। আপনি যখন একজন কর্মী তৈরি করেন তখন এটি স্বয়ংক্রিয়ভাবে নমুনা কোড সহ আসবে।
বাস্তবায়ন
আসুন ভিজিটরের আইপি ঠিকানা পান:
async function handleRequest(request) {
const ip = request.headers.get("cf-connecting-ip");
return new Response(ip);
}
হেডার থেকে ভিজিটর আইপি অ্যাড্রেস পাওয়া সম্ভব। এখন আমরা এই আইপি ঠিকানাটি অনুমোদিত তালিকায় আছে কিনা তা পরীক্ষা করতে চাই। আসুন একটি একক REST API কল করি এবং আমাদের কোড উন্নত করি।
async function handleRequest(request) {
const ip = request.headers.get("cf-connecting-ip");
res = await fetch(
"https://YOUR_DATABASE_ENDPOINT/sismember/allowed-set/" +
ip +
"?_token=YOUR_REST_API_TOKEN"
);
if ((await res.text()).includes("1")) {
return new Response(ip + " is allowed.");
}
return new Response(ip + " is not allowed.");
}
এখন আমরা আমাদের Upstash Redis সার্ভারে একটি বিশ্রাম এপিআই কল করি এবং আইপি ঠিকানা তালিকায় আছে কিনা তা পরীক্ষা করি। যদি ফলাফলে "1" থাকে তাহলে এর মানে হল এটি তালিকায় আছে, অন্যথায় এটি নেই৷
আপনি নিম্নলিখিত কমান্ডের সাহায্যে redis-cli ব্যবহার করে Redis সেট আপডেট করতে পারেন:
sadd allowed-set $IP_ADDRESS
উপসংহার এবং ভবিষ্যতের কাজ
এখন রেস্ট এপিআই ব্যবহার করে আপনার রেডিস সার্ভার ইনস্ট্যান্স অ্যাক্সেস করা সম্ভব। আমরা রেস্ট এপিআই ব্যবহার করে প্রায় সব কমান্ড সমর্থন করছি। আরো বিস্তারিত জানার জন্য অনুগ্রহ করে আমাদের ডকুমেন্টেশন দেখুন। ক্লাউডফ্লেয়ার কেভি স্টোরেজের সাথে, আপনি শুধুমাত্র কেভি ডিকশনারি API-এর সাথে আবদ্ধ এবং তৃতীয় পক্ষের অ্যাপ্লিকেশন থেকে ক্লাউডফ্লেয়ার ওয়ার্কার্স কেভি অ্যাক্সেস করা সহজ নয়। কিন্তু রেডিস বিপুল সংখ্যক বিভিন্ন ক্লায়েন্ট SDK এবং redis- cli এছাড়াও Upstash-এ আপনি REST API ব্যবহার করে আপনার Redis ডাটাবেস অ্যাক্সেস করতে পারেন।
এই সহজ অ্যাপ্লিকেশনটি ক্লাউডফ্লেয়ার ওয়ার্কারদের এক ধরণের নিরাপত্তা প্রহরী পর্যন্ত প্রসারিত করা যেতে পারে। ব্যবহারকারীরা রেডিস ডাটাবেসে কনফিগার মান পরিবর্তন করতে পারে এবং ক্লাউডফ্লেয়ার ওয়ার্কার রেডিস থেকে কনফিগারেশন পড়তে পারে।