EQVPS

HTTPS সহ nginx রিভার্স প্রক্সি কীভাবে সেট আপ করবেন

লোকাল পোর্টে শোনা যেকোনো অ্যাপের সামনে একটি পরিচ্ছন্ন ডোমেন এবং স্বয়ংক্রিয় HTTPS বসান। দুটি পথ: Certbot সহ nginx, অথবা এক লাইনে স্বয়ংক্রিয় TLS-এর জন্য Caddy। ধাপে ধাপে, কপি করার জন্য প্রস্তুত কনফিগ সহ।

বেশিরভাগ সেল্ফ-হোস্টেড অ্যাপ 127.0.0.1:3000-এর মতো একটি লোকাল পোর্টে শোনে এবং সাদামাটা HTTP-তে কথা বলে। একটি রিভার্স প্রক্সি সামনে পোর্ট 80/443-এ দাঁড়ায়, একটি আসল সার্টিফিকেট দিয়ে HTTPS শেষ করে এবং ট্রাফিক সেই লোকাল পোর্টে পাঠায় — আপনাকে একটি পরিচ্ছন্ন https://app.yourdomain.com দেয় এবং একটি IP-র পেছনে একাধিক অ্যাপ চালাতে দেয়। এখানে দুটি প্রচলিত পথ রয়েছে।

পূর্বশর্ত

বিকল্প A — Caddy (স্বয়ংক্রিয় HTTPS, এক লাইন)

sudo apt install -y caddy
echo 'app.yourdomain.com { reverse_proxy 127.0.0.1:3000 }' | sudo tee /etc/caddy/Caddyfile
sudo systemctl restart caddy

এটুকুই — Caddy ডোমেনের জন্য একটি Let's Encrypt সার্টিফিকেট নেয় এবং স্বয়ংক্রিয়ভাবে নবায়ন করে।

বিকল্প B — nginx + Certbot

sudo apt install -y nginx certbot python3-certbot-nginx

/etc/nginx/sites-available/app তৈরি করুন:

server {
    listen 80;
    server_name app.yourdomain.com;
    location / {
        proxy_pass http://127.0.0.1:3000;
        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_set_header X-Forwarded-Proto $scheme;
    }
}

এটি সক্রিয় করুন এবং HTTPS যোগ করুন:

sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d app.yourdomain.com

Certbot HTTPS পরিবেশনের জন্য কনফিগ সম্পাদনা করে এবং স্বয়ংক্রিয় নবায়ন সেট করে।

সৎ সতর্কবার্তা

পরবর্তী ধাপ

রিভার্স প্রক্সিই সেই জিনিস যা একটি সার্ভারকে অনেক কিছু পরিবেশন করতে দেয় — দেখুন একটি IP-র পেছনে একাধিক সার্ভিস সেল্ফ-হোস্টিং। অ্যাপ কনটেইনারে চালাচ্ছেন? Docker কীভাবে ইনস্টল করবেন দিয়ে শুরু করুন। অ্যাপটি নিজে রিস্টার্ট ও ক্র্যাশ পেরিয়ে টিকে থাকতে, দেখুন systemd সার্ভিস কীভাবে তৈরি করবেন

FAQ

রিভার্স প্রক্সি কী এবং আমার কেন এটি প্রয়োজন?

আপনার অ্যাপ সাধারণত 127.0.0.1:3000-এর মতো একটি লোকাল পোর্টে শোনে। রিভার্স প্রক্সি সামনে পোর্ট 80/443-এ দাঁড়ায়, HTTPS শেষ করে এবং অনুরোধগুলো সেই লোকাল পোর্টে পাঠায়। এটি আপনাকে একটি পরিচ্ছন্ন ডোমেন, একটি বৈধ TLS সার্টিফিকেট, এবং একটি IP-র পেছনে একাধিক অ্যাপ চালানোর ক্ষমতা দেয় — অথচ অ্যাপকে নিজে এর কিছুই করতে হয় না।

nginx না Caddy — কোনটি বেছে নেব?

Caddy সবচেয়ে দ্রুত পথ: এটি Let's Encrypt সার্টিফিকেট স্বয়ংক্রিয়ভাবে নেয় ও নবায়ন করে, আর একটি চালু HTTPS প্রক্সি হলো এক লাইনের কনফিগ। nginx বেশি পরিচিত ও নমনীয়, তবে TLS-এর জন্য আপনি Certbot যোগ করেন। কম ঝামেলায় HTTPS চাইলে Caddy নিন; nginx আগে থেকে জানলে বা এর বৈশিষ্ট্য দরকার হলে nginx নিন।

আমার কি একটি ডোমেন দরকার?

বিশ্বস্ত HTTPS সার্টিফিকেটের জন্য, হ্যাঁ — Let's Encrypt খালি IP নয়, ডোমেন নামের জন্য সার্টিফিকেট ইস্যু করে। একটি A রেকর্ড আপনার সার্ভারের IP-তে নির্দেশ করুন, DNS প্রচারের জন্য অপেক্ষা করুন, তারপর প্রক্সি সেই নামের জন্য সার্টিফিকেট নিতে পারবে।

কোন পোর্টগুলো খোলা থাকতে হবে?

ইনবাউন্ড 80 ও 443। পোর্ট 80 প্রাথমিক সার্টিফিকেট চ্যালেঞ্জ ও HTTPS-এ রিডাইরেক্টের জন্য ব্যবহৃত হয়; 443 এনক্রিপ্ট করা ট্রাফিক পরিবেশন করে। দুটোই আপনার ফায়ারওয়ালে খুলুন (UFW গাইড দেখুন) এবং নিশ্চিত করুন অন্য কিছু আগে থেকে সেগুলো দখল করে নেই।

সার্টিফিকেট ইস্যু কেন ব্যর্থ হয়?

প্রায় সবসময় DNS বা পোর্ট। ডোমেনের A রেকর্ড এই সার্ভারে নির্দেশ করতে হবে ও প্রচারিত হতে হবে, আর পোর্ট 80/443 পৌঁছনো-যোগ্য হতে হবে (ফায়ারওয়ালে খোলা, উপরের দিকে অবরুদ্ধ নয়)। এই দুটি ঠিক করুন, ইস্যু সফল হয়; Caddy ও Certbot দুটোই পুনরায় চেষ্টা করে।

মন্তব্য

এখনো কোনো মন্তব্য নেই। প্রথম হোন।

একটি মন্তব্য দিন

মন্তব্য প্রকাশের আগে মডারেট করা হয়।