Htaccess এ অ্যাপাচি ২.৪ মোড_প্রক্সি_ফসিজি এবং রাইরাইটরুলস বোঝা


9

আমরা সম্প্রতি আমাদের ওয়েব সার্ভারগুলির একটিকে অ্যাপাচি ২.৪ এ পরিবর্তন করেছি এবং পিএইচপি-পিএমপি এবং এমডি_প্রক্সি_ফসিগির মাধ্যমে পিএইচপি চালাচ্ছি। বেশিরভাগ সবকিছুই বেশ ভালভাবে কাজ করে তবে একটি সমস্যা রয়েছে যা আমি এখনও বুঝতে পারি না। আমাদের সাইটের একটি ওয়ার্ডপ্রেস চলছে, যা এর .htaccess ফাইলে পুনর্লিখনের নিয়মের একটি ভাল তালিকা বয়ে আনে। এবং দেখে মনে হচ্ছে যাঁরা ভোস্ট সেটআপে প্রক্সিপাস নির্দেশিকা নিয়ে এতটা ভাল কাজ করেন না।

আমাদের ভোস্টে নিম্নলিখিত কনফিগারেশন রয়েছে:

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.2:9126/<path>/$1

এটি বেশিরভাগ ক্ষেত্রেই কাজ করে।

এখন, এইচটিএকসেস ফাইলটি অন্যান্য জিনিসগুলির মধ্যে এটি করে:

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

সাইটটি সাব-ডাইরেক্টরিগুলিতে একটি মাল্টব্লগ হিসাবে, আমি পড়েছি যে ইউআরএল / ব্লগনেম / ডাব্লুপি-অ্যাডমিনি / লোড-স্টাইলস.এফপি? এক্সএক্সএক্সএক্সএক্সএইচপি-অ্যাডমিন / লোড-স্টাইলস.এফপি? এক্সএক্সএক্স (দ্বিতীয় পুনর্লিখনের নিয়ম) হিসাবে আবার লিখতে হবে। তবে মোড_প্রক্সি লগটি দেখে, অনুরোধটি আসলে পাস করা হয় /blogname/wp-admin/load-styles.php।

আমি এটি একটি অগ্রাধিকার সমস্যা হিসাবে পড়ছি - সমস্ত পুনর্নির্মাণের কাজ শেষ হওয়ার আগেই প্রক্সিপাস নিয়ম ফায়ার করে।

আমি স্তিমিত - এর কারণ কী হতে পারে?


আপনি কি .htaccess পরিবর্তে পুনরায় লেখাগুলি ভোস্টে রাখার চেষ্টা করেছেন? (আপনি যদি এটি করেন তবে সর্বাধিক স্ল্যাশের যত্ন
নিচ্ছেন

এটি কেবল স্টপগ্যাপ সমাধান হতে পারে: পুনর্লিখনের নিয়মগুলি লিখে যে সফ্টওয়্যারটি হ'ল ওয়ার্ডপ্রেস নিজেই। এটি একবারে নিয়মগুলি আপডেট করার জন্য ব্যবহৃত হয় (এবং এটি কোনও আপডেটের প্রক্রিয়ায় থাকুক), সুতরাং আমি সেগুলি পুরোপুরি ওয়েবস্পেস থেকে আড়াল করতে পারি না।
কনরাড নিউউইথर्थ

@ কনরাডনিউইথথ যখন আপনি অন্য নিয়মের নীচে পতাকা RewriteRuleদিয়ে একটি প্রক্সিঙে যান তখন কি এটি সঠিকভাবে কাজ করে [P]?
শেন ম্যাডেন

উত্তর:


12

আমি এই সমাধানটি পেয়েছি, আমি জানি না যে সবচেয়ে ভাল উপায় কিনা তবে আমার পক্ষে কাজ করে।

  1. লাইনটি সরান:

    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.2:9126/<path>/$1
    
  2. এটি আপনার নির্দেশিকায় যুক্ত করুন:

    <Directory /var/www/yoursiste.com>
        Options -Indexes +FollowSymLinks -ExecCGI +MultiViews
    
        AllowOverride All
    
        <IfModule mod_proxy_fcgi.c>
            RewriteEngine On
            RewriteBase /
            RewriteOptions InheritBefore
            RewriteCond %{REQUEST_FILENAME} -f
            RewriteRule ^([^\.]+\.php)$ fcgi://127.0.0.2:9126/var/www/yoursite.com/$1 [L,P]
        </IfModule>
    
        Order allow,deny
        allow from all
    
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
    </Directory>
    

    সমস্ত বাস্তব পিএইচপি ফাইলগুলি এফসিজি প্রক্সিতে পুনর্নির্দেশ করবে।

    এবং " RewritOptions InheritBefore " এটি বর্তমান কনফিগারেশনটিকে পিতামাতার কনফিগারেশন উত্তরাধিকারী করতে বাধ্য করে, তবে সন্তানের স্কোপ (ডিরেক্টরিতে .htaccess) এ নির্দিষ্ট বিধিগুলির আগে প্রয়োগ করা হয়। এফসিজি কনফিগারেশন এবং ক্লায়েন্ট .htaccess কনফিগারেশনের মধ্যে সামঞ্জস্যের একমাত্র উপায় খুঁজে পেয়েছি।

  3. অন্যান্য পরামিতিগুলি নিয়ন্ত্রণ করতে আপনার প্রক্সিটির প্রয়োজন হতে পারে:

    <IfModule mod_proxy_fcgi.c>
        <Proxy fcgi://127.0.0.2:9126>
            ProxySet timeout=1800 disablereuse=on
        </Proxy>
    </IfModule>
    

2

সহ ProxyPassMatch, .htaccessফাইলগুলি উপেক্ষা করা হয়। এখানে এবং এখানে বর্ণিত হিসাবে FilesMatchএবং এর SetHandlerপরিবর্তে ব্যবহার করার চেষ্টা করুন


দয়া করে একাধিকবার ঠিক একই উত্তর পোস্ট করবেন না। পরিবর্তে, প্রযোজ্য সময়ে, প্রশ্নগুলিকে সদৃশ হিসাবে ভোট / পতাকাঙ্কিত করুন।
সোভেন

এই আমি খুঁজছিলাম ছিল। এটি htaccess প্রসঙ্গে Mod_rewrite ব্যবহার করতে দেয়।
ডেভিড

0

প্রক্সিপাসম্যাচ এক্সপ্রেশনগুলিতে পুনর্লিখনের যুক্তি সরিয়ে দিন। আপনার ভোস্ট কনফিগারেশনের একটির আগে দুটি অতিরিক্ত প্রক্সিপাস ম্যাচ লাইন যুক্ত করুন:

ProxyPassMatch ^/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes)/.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/<path>/$2    
ProxyPassMatch ^/([_0-9a-zA-Z-]+/)?(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/<path>/$2
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/<path>/$1
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.