मेरे पास एक PHP सर्वर है जो PHP-FPM के माध्यम से चल रहा है जिसे पोर्ट 7000
पर nginx के माध्यम से fastcgi के साथ परोसा जाता है। इस एप्लिकेशन को डॉकराइज्ड किया गया है और एक चल रहे कंटेनर के रूप में चल रहा है, उदा। my_api।मैं एक nginx रिवर्स प्रॉक्सी के पीछे एक PHP अपस्ट्रीम के साथ XDebug का उपयोग कैसे कर सकता हूं?
my_api
डोकर कंटेनर एक और कंटेनर जो प्रॉक्सी upstreams का उपयोग करता है बंदरगाहों 80
और पर my_api
आवेदन (और अन्य) को बेनकाब करने के रिवर्स एक nginx रूप में कार्य करता माध्यम से जोड़ा जा सकता बंदरगाह 7000
(विवेक की जाँच के लिए) के माध्यम से सीधे के साथ-साथ उपयुक्त स्थानों के तहत proxy_pass
निर्देशों के माध्यम से 443
(पोर्ट 80
एसएसएल पर रीडायरेक्ट करता है)।
अगर मैं dbgp बंदरगाह पर 9000
सीधे खिलाफ एक फ़ाइल http://localhost:7000 से परोसा का उपयोग कर एक XDebug सत्र शुरू मैं देख सकता हूँ डिबगिंग सत्र सही ढंग से स्थापित किया गया है और मैं डीबग कर सकते हैं।
हालांकि, अगर मैं nginx रिवर्स प्रॉक्सी द्वारा प्रदान किए गए यूआरएल के खिलाफ एक्सडीबग सत्र शुरू करने का प्रयास करता हूं, उदा। https://localhost/my-api, डीबग सत्र शुरू नहीं होता है या कम से कम यह कनेक्शन ठीक से नहीं बनाता है (मेरे आईडीई में कोई ब्रेकपॉइंट हिट नहीं होता है)।
मैं nginx रिवर्स प्रॉक्सी के माध्यम से किए गए अनुरोधों के लिए XDebug सत्र कैसे स्थापित कर सकता हूं?
डोकर-compose.yml:
version: "2"
services:
api:
build: <path_to_dockerfile>
ports:
- 7000:7000
#- 9000:9000 # may be uncommented for direct debugging access
nginx_proxy:
build: <path_to_dockerfile>
links:
...
- api:api
ports:
- 80:80
- 443:443
xdebug.ini
इस सवाल के प्रयोजनों के लिए, नीचे एक (प्रासंगिक) मेरी docker-compose.yml
विन्यास और xdebug.ini
का नमूना है
zend_extension=xdebug.so
xdebug.remote_enable=true
xdebug.remote_connect_back=1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_autostart=0
एनबी: मैंने dbgpproxy चलाने वाले डॉकर कंटेनर को लॉन्च करने सहित इस काम को करने और प्राप्त करने के लिए कुछ अलग-अलग कॉन्फ़िगरेशन की कोशिश की है, लेकिन कुछ भी मुझे रिवर्स प्रॉक्सी से गुजरने वाले अनुरोधों को डीबग करने की अनुमति नहीं देता है। यह बहुत संभव है हालांकि कॉन्फ़िगरेशन मैं इन प्रयासों के लिए उपयोग कर रहा था, बस गलत था।
मेरे पास कुछ समस्याएं हैं जो मेरी समस्याएं हो सकती हैं, उनमें से संदेह है कि यह रिवर्स प्रॉक्सी का आईपी पता है जिसे X12ebug को remote_connect_back
कॉन्फ़िगरेशन प्रॉपर्टी के माध्यम से सूचित किया जा रहा है।
किसी भी मदद या अंतर्दृष्टि को XDebug को ठीक से कॉन्फ़िगर करने के तरीके को कॉन्फ़िगर करने के लिए कैसे करें जो nginx प्रॉक्सी के माध्यम से सर्वर पर किए गए अनुरोधों के साथ काम करने के लिए अपस्ट्रीम सर्वर पर जाता है!
यदि मैं सहायक होगा तो मैं और विवरण प्रदान कर सकता हूं!
'xdebug.remote_connect_back = 1' - यह = बनाने' 0' और उचित होस्ट का उपयोग/Ip में 'xdebug.remote_host' – LazyOne
भी - xdebug लॉग सक्षम करें और देखें कि उसे क्या कहना होगा - यह दिखाएगा कि आईपी क्या है: por यह कनेक्ट करने का प्रयास करता है और (यदि डीबग सत्र स्वीकार किया जाता है) वहां क्या हो रहा है। – LazyOne