প্রক্সি সার্ভারের জন্য NGINX কনফিগার করা - এঙ্গুলার উনিভার্সাল

angularangular-universalproxy


আমার ব্লগ এর পিছনে তিনটা সার্ভার চলে

১. টমকেট সার্ভার, জাভা দিয়ে বানানো API সার্ভ করার জন্য

২. এক্সপ্রেস সার্ভার, নোড দিয়ে এঙ্গুলার সার্ভার সাইড কোড সার্ভ করার জন্য

৩. nginx, উপরের দুটা সার্ভারের প্রক্সি হিসাবে


সার্ভারে কিছু ইনস্টল দেয়া জন্য কখনোই সার্ভারে গিয়ে হাতে ধরে কোন কিছু ইনস্টল করি না। কারণ সার্ভার পরিবর্তন করতে হয়, নতুন সার্ভার যোগ করতে হয়, বারবার একই কাজ করার মানে হয়না। আমি আনসিবল স্ক্রিপ্ট ব্যবহার করি। এনসিবল স্ক্রিপ্ট নিয়ে কোন এক সময় বিস্তারিত লিখব। nginx ইনস্টল হয়ে গেলে কনফিগার করাই একমাত্র কাজ। নিচে আমার লাইভ সার্ভারের কনফিগার দিয়ে দেয়া হলো :)


nginx এর সেটাপ ফাইল

proxy_cache_path  /home/cache/nginx/api levels=1:2 keys_zone=api_cache:10m inactive=60m;

server {
    listen          80;
    server_name     marufh.com;
    root /home/project/ui/dist/browser;
    
    location /api/ {
        proxy_cache api_cache;
        proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
        
        proxy_pass        http://localhost:5710/api/;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  Host $http_host;
    }

   location / {
        try_files $uri $uri @backend; 
    }

    location @backend {
        proxy_pass          http://localhost:4000; 
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    Host $http_host;
    }
  }


location /api/ হচ্ছে টমকেট এর প্রক্সি
location / হচ্ছে ক্লায়েন্ট সাইড ফাইল সার্ভ করার জন্য
location @backend আসলে ক্লায়েন্ট এর এক্সটেনশন, এটা এক্সপ্রেস এর প্রক্সি


proxy_cache_path  /home/cache/nginx/api levels=1:2 keys_zone=api_cache:10m inactive=60m;

উপরের লাইন দিয়ে API ক্যাশ করা হয়েছে


root /home/project/ui/dist/browser;

আমার এঙ্গুলার এপ্লিকেশন এর লোকেশন


আর বাদ বাকি যা আছে দেখেই বুঝা যাচ্ছে প্রক্সি এবং হেডার নিয়ে কাজ। আপনি চাইলে অ্যাপাচি ব্যবহার করতে পারেন nginx এর বিকল্প হিসাবে। ধন্যবাদ।