লোড-ব্যালেন্সারের পিছনে আমার একটি ওয়েব সার্ভার রয়েছে।
যখনই আমরা রক্ষণাবেক্ষণের জন্য সাইটটি অফলাইনে রাখি তখন কোনও রক্ষণাবেক্ষণ পৃষ্ঠা প্রদর্শন করতে আমার আমার .htaccess এ শর্তযুক্ত পুনঃনির্দেশ যুক্ত করতে হবে। এই অংশটি সোজা:
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.php [R=302,L]
তবে আমি একটি শর্তে যোগ করতে চাই যে যদি দর্শকের আইপি ঠিকানাটি আমার নিজস্ব হয় তবে এটি আমাকে রক্ষণাবেক্ষণ পৃষ্ঠায় পুনর্নির্দেশ করবে না এবং আমি সাইটটি এটি অনলাইনের মতো দেখতে এবং পরীক্ষা করতে সক্ষম হব। এই অংশটি সাধারণত সোজাও হয়:
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^11\.111\.111\.111
RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.php [R=302,L]
তবে, যেহেতু আমার ওয়েব সার্ভারটি লোড ব্যালান্সারের পিছনে REMOTE_ADDRরয়েছে, লোড ব্যালেন্স সার্ভারের অভ্যন্তরীণ আইপি ঠিকানার সমাধান করা হয়েছে।
ফরোয়ার্ড করা আইপি ঠিকানা খুঁজতে আমি কীভাবে এটি পরিবর্তন করতে পারি? আমি পিএইচপি তে জানি আপনি $_SERVER['HTTP_X_FORWARDED_FOR']ফরোয়ার্ড আইপি ঠিকানা পেতে ব্যবহার করতে পারেন । আমি কয়েকটি জিনিস চেষ্টা করেছি .htaccessতবে ভাগ্য নেই:
%{X_FORWARDED_FOR}
%{HTTP:X_FORWARDED_FOR}
%{HTTP_X_FORWARDED_FOR}
সমাধান
আমি কাজ করার জন্য নিম্নলিখিত পেয়েছি:
%{HTTP:X-FORWARDED-FOR}
.jpeবা .jpফাইলগুলি?