PHP FPM को कॉन्फ़िगर करते समय Apache SetHandler निर्देश का सिंटैक्स
मैंने कुछ ट्यूटोरियल का अनुसरण किया है और PHP FPM का उपयोग करने के लिए Apache को कॉन्फ़िगर किया है। हालाँकि, मुझे समझ में नहीं आ रहा है कि SetHandler
लाइन का कौन सा हिस्सा कर रहा है और मेरे कुछ प्रयोगों के आधार पर यह निरर्थक प्रतीत होता है। मेरे पास लाइन है:
SetHandler "proxy:unix:/run/php/php7.3-fpm.sock|fcgi://localhost"
यह काम करता है कि क्या |fcgi://localhost
वर्तमान है या नहीं।
विभिन्न स्थानों में, जैसे कि Plesk विन्यास, मैंने देखा है कि इस हिस्से को fcgi://localhost
बदल दिया गया हैfcgi://127.0.0.1:9000
का उद्देश्य क्या है |fcgi://localhost
? क्या यह बेमानी है और क्या इसे हटाया जा सकता है?
क्या पाइप, जुर्राब और fcgi sock|fcgi
को एक 'या' के रूप में व्याख्या करने के लिए अलग किया जाता है, जिसका अर्थ है कि अगर यूनिक्स सॉकेट मौजूद नहीं है, तो इसके बजाय tcp कनेक्शन का उपयोग करें?
मेरे FPM पूल कॉन्फ़िगरेशन में मैंने सुनने के निर्देश को एक होस्ट और पोर्ट के साथ बदलने की कोशिश की है, वह भी केवल एक पोर्ट के साथ, लेकिन मैं इसे काम करने के लिए प्राप्त नहीं कर सकता। आप एक यूनिक्स सॉकेट के बजाय टीसीपी के माध्यम से उपलब्ध होने के लिए PHP एफपीएम को कैसे कॉन्फ़िगर करेंगे? मेरे पास सीखने के लिए फिलहाल ऐसा करने का कोई कारण नहीं है।
आखिरकार। क्या यह सवाल पूछने के लिए सही 'स्टैक' साइट है?
यह कहने के लिए संपादित करें कि मैंने Apache से एक छोटा सा प्रलेखन पाया है । उदाहरण अनुभाग में अंतिम उदाहरण |fcgi://something
एक रिवर्स प्रॉक्सी अनुरोध को मजबूर करने के संदर्भ में उपयोग करने के बारे में बात करता है , लेकिन मैं वास्तव में इसे नहीं समझता।
जवाब
दस्तावेज़ में स्पष्ट रूप से कहा गया है कि क्यों आपको इसे शामिल करना चाहिए भले ही यह अनिवार्य न हो:
प्रदर्शन कारणों से, आप उसी
fcgi://
बैकएंड का प्रतिनिधित्व करने वाले कार्यकर्ता को परिभाषित करना चाहेंगे । इस फॉर्म का लाभ यह है कि यह यूआरआई के सामान्य मानचित्रण को सर्वर में होने के लिए फाइल करने के लिए अनुमति देता है, और स्थानीय फाइल सिस्टम परिणाम बैकएंड को पारित किया जाता है। जब FastCGI को इस तरह कॉन्फ़िगर किया जाता है, तो सर्वर सबसे सटीक PATH_INFO की गणना कर सकता है।