apache এর ফ্রন্টএন্ড প্রক্সি হিসাবে nginx রেখে কিভাবে ওয়ার্ডপ্রেসের ইনফিনিট লুপ থেকে বের হবেন

1404467238-6d88e76ebc1b9cdee56c2a113ebfc8bd

একটা মজার সিচুয়েশন বলি… ধরুন আপনি আপনার লিনাক্স সার্ভারে অ্যাপাচির (apache2) ফ্রন্টএন্ড প্রক্সি হিসাবে ইনজিন-এক্স (nginx) সেটাপ করেছেন, খুব ভালো কথা। চমৎকার পারফর্মেন্স পাবেন, সেটাও খুব ভালো কথা। কিন্তু আসল মজাটা টের পাবেন ওয়ার্ডপ্রেস সেটাপ দেয়ার পর। দেখবেন ব্রাউজার কেবল ঘুরছে আর ঘুরছেই, আপনার সাইট আর খুলছে না। জোস না? 😉

বিষয়টা একটু জটিল। আসুন একটু বোঝার চেষ্টা করি ঘটনাটা কি হয়। রিভার্স প্রক্সিতে সাধারনত ইনজিন-এক্স দিয়ে সব স্ট্যাটিক ডাটা প্রসেস করা হয়। আর পিএইচপি রিকোয়েষ্টগুলো এপাচির কাছে পাঠিয়ে দেয়া হয়।

মজা শুরু এইখানে। আপনি যখন “abcd.xyz” এই ডোমেইনে যান, তখন ইনজিন-এক্স সেটাকে এপাচির কাছে পাঠিয়ে দেয় কিন্তু পাঠানোর সময় URL টা কে “abcd.xyz/index.php” বানিয়ে পাঠায় কারন আপনি ইনজিন-এক্সকে আগেই বলে রেখেছেন পিএইচপি সব রিকোয়েস্ট প্রসেস করার জন‍্য এপাচির কাছে পাঠিয়ে দিতে। এখন অ‍্যাপাচি যখন “abcd.xyz/index.php” এই URL টা পেলো, তখন ওয়ার্ডপ্রেস সেটাকে নিজে থেকেই ছোট করে আবার “abcd.xyz” এই URL এ রিডাইরেক্ট করে। ইনজিন-এক্স আবার সেটাকে এপাচির কাছে পাঠায়, আবার একই জিনিস হয়। এভাবে এটা ঘুরতেই থাকে, ঘুরতেই থাকে… … …

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

প্রথমেই বলে নিচ্ছি এটা হয়তো বেস্ট ওয়ে না, কিন্তু আমি এভাবেই করেছি। আপনার কাছে যদি আরো জোস কোন আইডিয়া বা ওয়ে থাকে, প্লিজ কমেন্টে জানান। আমি আপনার ক্রেডিটসহ পোষ্ট আপডেট করে দিবো।

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

server {
listen   80;

root /var/www/html;
index index.php index.html index.htm;

server_name localhost;

location / {
try_files $uri $uri/ /index.php?$args;
}

location ~[^?]*/$ {
proxy_set_header X-Real-IP  $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}

location ~ \.php$ {
proxy_set_header X-Real-IP  $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}

location ~ /\.ht {
deny all;
}
}

এখানে আমি যেটা করেছি সেটা হল শুধু পিএইচপি এক্সটেনশনওয়ালা ফাইলের পাশাপাশি পুরো ওয়ার্ডপ্রেস ডিরেক্টরিগুলাও পাঠিয়ে দিয়েছি। আর পুরো কাজটা করছে এই ব্লকটা:

location ~[^?]*/$ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}

ব‍্যাস। কাজ শেষ। এইবার আপনার সাধের ওয়ার্ডপ্রেস সুন্দরমত চলে আসবে। আর যদি না আসে, কমেন্টে জানান। দেখি সলুশন দেয়া যায় কিনা 🙂

Got the idea from Lucas Bonner.

Advertisements

2 thoughts on “apache এর ফ্রন্টএন্ড প্রক্সি হিসাবে nginx রেখে কিভাবে ওয়ার্ডপ্রেসের ইনফিনিট লুপ থেকে বের হবেন

  1. vaia bdlawnews.com ar nirbhik.com ei duita site niye problem a porsi. daily 15-20hajar session hoy ek ekta te. mediatemple er vps a duita rakhsilam kintu bar bar server down hoey jacchilo. ekhon duita alada vps a ase. apnar ki mone hoy problem ta theme a naki load er karone emon hoisilo?

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s