সার্ভার এখনও সক্রিয় থাকা সত্ত্বেও nginx প্রক্সি_পাস শেষ পর্যন্ত GATEWAY_TIMEOUT প্রদান করে


9

আমি একটি এনগিনেক্স প্রক্সি পাসস্ট্রু সেট আপ করেছি যা এনগিনেক্স শুরুতে লোড হয়ে গেলে ঠিকঠাক কাজ করে তবে শেষ পর্যন্ত (সম্ভবত একদিন বা আরও কিছু পরে? এই মুহুর্তে খুব বেশি নিশ্চিত না) প্রক্সি পাসস্ট্রোভের অবস্থানটি কেবল 504 GATEWAY_TIMEOUTপ্রতিক্রিয়া দেখায় । অদ্ভুত বিষয়টি হ'ল আমি একাধিক প্রক্সি_পাস অবস্থান সেট আপ করেছি এবং এটি নিচে যা যায় এবং কী আপ থাকে তা এলোমেলো।

এখানে এনগিনেক্স কনফিগারেশন ফাইলটি রয়েছে:

server {
  listen   80;
  server_name  example.com;
  access_log  /var/log/nginx/access.log;
  error_log  /var/log/nginx/error.log;
  root   /srv/www/frontend/current/;

  location / {
    try_files $uri $uri/ /index.html;
  }

  # Block all svn access
  if ($request_uri ~* ^.*\.svn.*$) {
     return 404;
  }

  # Block all git access
  if ($request_uri ~* ^.*\.git.*$) {
     return 404;
  }

  location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    deny all;
  }

  location /api/karma/ {
    proxy_pass <server A>;
  }

  location /api/auth/ {
    proxy_pass <server B>;
  }

  location /api/search/ {
    proxy_pass <server C>;
  }

  location /api/history/ {
    proxy_pass <server D>;
  }
}

(আমি স্পষ্টতই সার্ভারের অবস্থানগুলি বেনামে রেখেছি)

সুতরাং উদাহরণস্বরূপ, যখন nginx শুরুতে শুরু হয়, আমি করতে পারি

curl -i example.com/api/history/health_check

(যেখানে স্বাস্থ্য_পরিচাগুলি একটি চূড়ান্ত শেষ-পয়েন্ট) এবং 200 টি প্রতিক্রিয়া পান তবে কিছুক্ষণ পরে একই সঠিক কমান্ড 504 GATEWAY_TIMEOUT দেয়।

অন্তর্নিহিত সার্ভার এবং HTTP সার্ভার এখনও সম্পূর্ণরূপে পরিচালিত হয়েছে যদিও আমি সার্ভারের ঠিকানার বিরুদ্ধে সরাসরি কার্ল কমান্ডগুলি করতে পারি এবং আমার স্থানীয় মেশিন থেকে এবং এনজিএনএক্স সার্ভারে প্রবেশের সময় উভয় প্রতিক্রিয়া পেতে পারি।

GATEWAY_TIMEOUT ফেরত শুরু করা অবস্থানের উপসর্গটি এলোমেলো এবং যখন থেকে এটি চারটি অবস্থানের প্রতিটি যেখানেই প্রক্সিপাস রয়েছে সেগুলির প্রতিটি সেটআপ করা হয়েছে এই ফ্যাশনে এক পর্যায়ে বা অন্য স্থানে ব্যর্থ হয়েছে।

সব কিছুই এডাব্লুএস টি 2_মিকো উবুন্টু 14.04 লিনাক্সের উদাহরণগুলিতে হোস্ট করা হয় এবং এনজিঙ্কস নিজেই v1.4.6। অন্তর্নিহিত সার্ভারগুলি / অ্যাপ্লিকেশনগুলি পুনরায় আরম্ভ করা হচ্ছে না, এবং এডাব্লুএস এর উদাহরণগুলিও পুরো সময়টিতে ছিল। অন্তর্নিহিত HTTP সার্ভারগুলি হ'ল অ্যাপ্লিকেশনগুলি, তবে আবার যখন আমি এই GATEWAY_TIMEOUTগুলি পেতে শুরু করি তখন অ্যাপ্লিকেশনগুলি নিজেরাই পুরোপুরি কার্যকর হয়।

এটি হওয়ার পরে ত্রুটিযুক্ত লগগুলিতে আকর্ষণীয় কিছু ছিল না, তবে আমি ত্রুটি লগটিতে সবেমাত্র ডিবাগ লগিং চালু করেছি, এবং একটি ভাঙার অনুরোধটি এখানে আসে:

2015/07/13 19:56:31 [debug] 3523#0: *12096 post event 00000000022542A0
2015/07/13 19:56:31 [debug] 3523#0: *12096 delete posted event 00000000022542A0
2015/07/13 19:56:31 [debug] 3523#0: *12096 http wait request handler
2015/07/13 19:56:31 [debug] 3523#0: *12096 posix_memalign: 000000000222F6A0:256 @16
2015/07/13 19:56:31 [debug] 3523#0: *12096 malloc: 0000000002225CA0:1024
2015/07/13 19:56:31 [debug] 3523#0: *12096 recv: fd:23 1018 of 1024
2015/07/13 19:56:31 [debug] 3523#0: *12096 reusable connection: 0
2015/07/13 19:56:31 [debug] 3523#0: *12096 posix_memalign: 00000000022260B0:4096 @16
2015/07/13 19:56:31 [debug] 3523#0: *12096 http process request line
2015/07/13 19:56:31 [debug] 3523#0: *12096 http request line: "POST <url> HTTP/1.1"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http uri: "<url>"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http args: ""
2015/07/13 19:56:31 [debug] 3523#0: *12096 http exten: ""
2015/07/13 19:56:31 [debug] 3523#0: *12096 http process request header line
2015/07/13 19:56:31 [debug] 3523#0: *12096 http header: "host: <url>"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http header: "Accept: application/json, text/plain, */*"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http header: "Accept-Encoding: gzip, deflate"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http header: "Accept-Language: en-US,en;q=0.8"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http header: "Authorization: <auth token>"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http header: "Content-Type: application/json;charset=UTF-8"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http header: "Origin: <url>"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http header: "Referer: <url>"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http header: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http header: "X-Forwarded-For: <ip address>"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http header: "X-Forwarded-Port: 443"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http header: "X-Forwarded-Proto: https"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http header: "Content-Length: 209"
2015/07/13 19:56:31 [debug] 3523#0: *12096 posix_memalign: 00000000022270C0:4096 @16
2015/07/13 19:56:31 [debug] 3523#0: *12096 http header: "Connection: keep-alive"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http header done
2015/07/13 19:56:31 [debug] 3523#0: *12096 event timer del: 23: 1436817428740
2015/07/13 19:56:31 [debug] 3523#0: *12096 generic phase: 0
2015/07/13 19:56:31 [debug] 3523#0: *12096 rewrite phase: 1

** snip ( bunch of logs about trying to match the url to a route )

2015/07/13 19:56:31 [debug] 3523#0: *12096 http cl:209 max:4194304
2015/07/13 19:56:31 [debug] 3523#0: *12096 rewrite phase: 3
2015/07/13 19:56:31 [debug] 3523#0: *12096 post rewrite phase: 4
2015/07/13 19:56:31 [debug] 3523#0: *12096 generic phase: 5
2015/07/13 19:56:31 [debug] 3523#0: *12096 generic phase: 6
2015/07/13 19:56:31 [debug] 3523#0: *12096 generic phase: 7
2015/07/13 19:56:31 [debug] 3523#0: *12096 access phase: 8
2015/07/13 19:56:31 [debug] 3523#0: *12096 access phase: 9
2015/07/13 19:56:31 [debug] 3523#0: *12096 post access phase: 10
2015/07/13 19:56:31 [debug] 3523#0: *12096 try files phase: 11
2015/07/13 19:56:31 [debug] 3523#0: *12096 http client request body preread 209
2015/07/13 19:56:31 [debug] 3523#0: *12096 http request body content length filter
2015/07/13 19:56:31 [debug] 3523#0: *12096 http body new buf t:1 f:0 0000000002225FC9, pos 0000000002225FC9, size: 209 file: 0, size: 0
2015/07/13 19:56:31 [debug] 3523#0: *12096 http init upstream, client timer: 0
2015/07/13 19:56:31 [debug] 3523#0: *12096 epoll add event: fd:23 op:3 ev:80000005
2015/07/13 19:56:31 [debug] 3523#0: *12096 http script copy: "Host: "
2015/07/13 19:56:31 [debug] 3523#0: *12096 http script var: "<aws url>"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http script copy: "
"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http script copy: "Connection: close
"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http script copy: "Content-Length: "
2015/07/13 19:56:31 [debug] 3523#0: *12096 http script var: "209"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http script copy: "
"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy header: "Accept: application/json, text/plain, */*"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy header: "Accept-Encoding: gzip, deflate"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy header: "Accept-Language: en-US,en;q=0.8"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy header: "Authorization: <auth>"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy header: "Content-Type: application/json;charset=UTF-8"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy header: "Origin: <url>"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy header: "Referer: <url>"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy header: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy header: "X-Forwarded-For: 96.45.202.230"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy header: "X-Forwarded-Port: 443"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy header: "X-Forwarded-Proto: https"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy header:
"POST /v1/trip HTTP/1.0
Host: <url>
Connection: close
Content-Length: 209
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
Authorization: <auth>
Content-Type: application/json;charset=UTF-8
Origin: <url>
Referer: <url>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36
X-Forwarded-For: 96.45.202.230
X-Forwarded-Port: 443
X-Forwarded-Proto: https

"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http cleanup add: 0000000002227C40
2015/07/13 19:56:31 [debug] 3523#0: *12096 get rr peer, try: 2
2015/07/13 19:56:31 [debug] 3523#0: *12096 get rr peer, current: 1 0
2015/07/13 19:56:31 [debug] 3523#0: *12096 socket 24
2015/07/13 19:56:31 [debug] 3523#0: *12096 epoll add connection: fd:24 ev:80000005
2015/07/13 19:56:31 [debug] 3523#0: *12096 connect to 54.174.36.245:80, fd:24 #12097
2015/07/13 19:56:31 [debug] 3523#0: *12096 http upstream connect: -2
2015/07/13 19:56:31 [debug] 3523#0: *12096 posix_memalign: 000000000222F7B0:128 @16
2015/07/13 19:56:31 [debug] 3523#0: *12096 event timer add: 24: 60000:1436817451902
2015/07/13 19:56:31 [debug] 3523#0: *12096 http finalize request: -4, "<url>" a:1, c:2
2015/07/13 19:56:31 [debug] 3523#0: *12096 http request count:2 blk:0
2015/07/13 19:56:31 [debug] 3523#0: *12096 post event 000000000226E2B0
2015/07/13 19:56:31 [debug] 3523#0: *12096 delete posted event 000000000226E2B0
2015/07/13 19:56:31 [debug] 3523#0: *12096 http run request: "<url>"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http upstream check client, write event:1, "<url>"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http upstream recv(): -1 (11: Resource temporarily unavailable)
2015/07/13 19:56:31 [debug] 3523#0: post event 0000000002253E90
2015/07/13 19:56:31 [debug] 3523#0: delete posted event 0000000002253E90
2015/07/13 19:56:31 [debug] 3523#0: accept on 0.0.0.0:80, ready: 0
2015/07/13 19:56:31 [debug] 3523#0: posix_memalign: 000000000222F840:256 @16
2015/07/13 19:56:31 [debug] 3523#0: *12098 accept: 172.31.15.160 fd:25
2015/07/13 19:56:31 [debug] 3523#0: *12098 event timer add: 25: 60000:1436817451902
2015/07/13 19:56:31 [debug] 3523#0: *12098 reusable connection: 1
2015/07/13 19:56:31 [debug] 3523#0: *12098 epoll add event: fd:25 op:1 ev:80000001
2015/07/13 19:56:31 [debug] 3523#0: post event 0000000002253E90
2015/07/13 19:56:31 [debug] 3523#0: delete posted event 0000000002253E90
2015/07/13 19:56:31 [debug] 3523#0: accept on 0.0.0.0:80, ready: 0
2015/07/13 19:56:31 [debug] 3523#0: posix_memalign: 000000000222F950:256 @16
2015/07/13 19:56:31 [debug] 3523#0: *12099 accept: 172.31.15.160 fd:26
2015/07/13 19:56:31 [debug] 3523#0: *12099 event timer add: 26: 60000:1436817451902
2015/07/13 19:56:31 [debug] 3523#0: *12099 reusable connection: 1
2015/07/13 19:56:31 [debug] 3523#0: *12099 epoll add event: fd:26 op:1 ev:80000001
2015/07/13 19:56:31 [debug] 3523#0: *12096 post event 000000000226E040
2015/07/13 19:56:31 [debug] 3523#0: *12096 delete posted event 000000000226E040
2015/07/13 19:56:31 [debug] 3523#0: *12096 http upstream request: "<url>"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http upstream send request handler
2015/07/13 19:56:31 [debug] 3523#0: *12096 http upstream send request
2015/07/13 19:56:31 [debug] 3523#0: *12096 chain writer buf fl:0 s:830
2015/07/13 19:56:31 [debug] 3523#0: *12096 chain writer buf fl:1 s:209
2015/07/13 19:56:31 [debug] 3523#0: *12096 chain writer in: 0000000002227C98
2015/07/13 19:56:31 [debug] 3523#0: *12096 writev: 1039
2015/07/13 19:56:31 [debug] 3523#0: *12096 chain writer out: 0000000000000000
2015/07/13 19:56:31 [debug] 3523#0: *12096 event timer del: 24: 1436817451902
2015/07/13 19:56:31 [debug] 3523#0: *12096 event timer add: 24: 60000:1436817451904
2015/07/13 19:56:31 [debug] 3523#0: *12096 post event 0000000002254030
2015/07/13 19:56:31 [debug] 3523#0: *12096 post event 000000000226E040
2015/07/13 19:56:31 [debug] 3523#0: *12096 delete posted event 000000000226E040
2015/07/13 19:56:31 [debug] 3523#0: *12096 http upstream request: "<url>"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http upstream dummy handler
2015/07/13 19:56:31 [debug] 3523#0: *12096 delete posted event 0000000002254030
2015/07/13 19:56:31 [debug] 3523#0: *12096 http upstream request: "<url>"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http upstream process header
2015/07/13 19:56:31 [debug] 3523#0: *12096 malloc: 00000000022280D0:4096
2015/07/13 19:56:31 [debug] 3523#0: *12096 recv: fd:24 141 of 4096
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy status 200 "200 OK"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy header: "Content-Type: text/plain"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy header: "Date: Mon, 13 Jul 2015 19:56:31 GMT"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy header: "Server: nginx/1.6.2"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy header: "Content-Length: 0"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy header: "Connection: Close"
2015/07/13 19:56:31 [debug] 3523#0: *12096 http proxy header done
2015/07/13 19:56:31 [debug] 3523#0: *12096 xslt filter header
2015/07/13 19:56:31 [debug] 3523#0: *12096 HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Mon, 13 Jul 2015 19:56:31 GMT
Content-Type: text/plain
Content-Length: 0
Connection: keep-alive

আকর্ষণীয় লাইনটি (আমার কাছে) হ'ল:

2015/07/13 19:56:31 [debug] 3523#0: *12096 http upstream recv(): -1 (11: Resource temporarily unavailable)

আমি গুগলটিতে সেই স্ট্রিংটি খোঁজার চেষ্টা করেছি তবে সত্যি বলতে আমি উত্তরগুলি সত্যই বুঝতে পারি না এবং তারা যেভাবেই আমার সাথে চলছে তার সাথে তারা সম্পর্কিত বলে মনে হয় না।


এনজিনেক্স অ-ব্লকিং আই / ও ব্যবহার করে। আপনি যে ত্রুটিটির কথা উল্লেখ করছেন এটি পুরোপুরি স্বাভাবিক, এটি কেবলমাত্র এনজিন্সকে বলে যে এই মুহুর্তে সেই সকেট থেকে কিছুই পড়তে পারে না।
অলিভার

উত্তর:


1

বোতলের ঘাড়টি সম্ভবত আপনার ফাইলের বর্ণনাকারীর t2_micro সংখ্যায় রয়েছে তবে এটির একটি নেটওয়ার্ক ব্যান্ডউইথ ইস্যু হওয়ার উচ্চ সম্ভাবনাও রয়েছে।

ব্যান্ডউইথ না বাড়িয়ে এই সমস্যাটি সমাধানের দুটি জেনেরিক উপায় রয়েছে: ১) উন্মুক্ত ফাইল সিস্টেমের সীমা (সংখ্যা) বৃদ্ধি করুন এবং / অথবা এনজিন্সের জন্য ইউলিমিট ২) এনগিনেক্স ১.7.৫ বা উচ্চতরতে আপগ্রেড করুন

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

  • বাফারিং ডিফল্টরূপে চালু থাকে, সুতরাং এটি নির্দিষ্ট করা ডিফল্ট পাথটি proxy_temp_pathবিদ্যমান এবং এটির পর্যাপ্ত ডিস্কের স্থান রয়েছে তা নিশ্চিত করুন , কারণ যদি এটি না হয় তবে বাফার করা বার্তাগুলি অস্থায়ীভাবে খালি বা মিস হয়ে যেতে পারে এবং প্রতিক্রিয়ার অপেক্ষায় একটি সময়সীমা তৈরি করতে পারে।
  • কম ব্যান্ডউইথ সার্ভারে 'আরও বুদ্ধিদীপ্তভাবে' এনজিনেক্স হ্যান্ডেল প্রক্সি অনুরোধগুলি সামঞ্জস্য করতে proxy_next_upstream_timeoutএবং 1.60.5 বা তার চেয়ে বেশি সংস্করণ আপনার প্রয়োজন হবে proxy_next_upstream_tries। উদাহরণস্বরূপ, আপনি একটি ত্রুটি পাস করার আগে অনেকগুলি চেষ্টা চেষ্টা করতে পারেন।

আপডেট: সংস্করণ 1.7.5 এবং ততোধিক সংস্করণে ত্রুটির আগে প্রক্সি পরীক্ষার সংখ্যা কনফিগার করতে, nginx.conf এ এই এন্ট্রি যুক্ত করুন:

proxy_next_upstream_tries 3;

এটি আপনাকে দুটি পুনরায় চেষ্টা করবে (একটি চেষ্টা, আরও দুটি পুনরায় চেষ্টা)।


শান্ত! দ্বিতীয় বিকল্পটি ব্যবহার করতে যাচ্ছেন (এনগিনেক্সের সর্বশেষ স্থিতিশীল সংস্করণে আপগ্রেড করুন) এবং দেখুন কী ঘটে। সাধারণত সমস্যাটি ট্রিগার হওয়ার এক বা দুই দিন সময় নেয়, সুতরাং ফলাফলের পরে আমি এখানে একটি প্রতিক্রিয়া পোস্ট করব।
syazdani

অসাধারণ. নিজেই 1.7.5 এ আপগ্রেড করার ফলে সমস্যাটি ঠিক হবে না। যেহেতু ডিফল্ট প্রক্সি_রেট্রিগুলি 0 হয় তাই আপনাকে nginx.conf সম্পাদনা করতে হবে এবং 1 বা 2 এর মতো একটি পরামিতি যুক্ত করতে হবে um
অ্যান্ড্রু এস

আমি আমার উত্তরটি প্রক্সি_সেক্সট_আপ্সটাম_ট্রি বিকল্পগুলির বিন্যাসের সাথে আপডেট করেছি
অ্যান্ড্রু এস

সুতরাং আমি আসলে মাত্র ১.৮.০ এ এনগিনেক্সে আপগ্রেড করেছি এবং এটি প্রায় এক সপ্তাহ হয়ে গেছে যে আমরা সমস্যা মুক্ত হয়েছি। এর অর্থ এই নয় যে এটি 100% চলে গেছে, তবে আমার জন্য এখনই যথেষ্ট ভাল।
syazdani

1

এটি nginx.conf এ যুক্ত করুন:

proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;

তারপরে 'সার্ভিস এনগিনেক্স পুনরায় লোড করুন' (যদি আপনি সিস্টেমড ব্যবহার করছেন তবে 'সিস্টেমটেক্ট এনজিনেক্স পুনরায় লোড')

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