2011-11-29 11 views
26

/etc/hosts समाधानकर्ता के बजाय जब proxy_pass का उपयोग कर इस्तेमाल किया जा कर सकते हैं?proxy_pass का उपयोग करते समय, "resolver" के बजाय डोमेन नामों को हल करने के लिए/etc/hosts का उपयोग किया जा सकता है?

मुझे उसी nginx मशीन पर proxy_pass करने की आवश्यकता है। क्या "रिज़ॉल्वर" संपत्ति के माध्यम से DNS सर्वर निर्दिष्ट करने के बजाय मशीन की/etc/hosts फ़ाइल का उपयोग कर डोमेन को हल करने का कोई तरीका है?

यह मुझे उसी सर्वर तक पहुंचने के लिए आवश्यक अतिरिक्त होप्स बचाएगा। मैंने/etc/hosts फ़ाइल में DNS में मैप किए गए आंतरिक आईपी को स्थापित करने का प्रयास किया है, लेकिन nginx अभी भी रिज़ॉल्वर संपत्ति में DNS सर्वर सेट से पढ़ रहा है। या HTTPProxy मॉड्यूल को/etc/hosts फ़ाइल सेटिंग्स पर विचार करने का कोई तरीका है?

आप साझा कर सकता किसी भी सलाह के लिए धन्यवाद ..

यह वही सवाल मैं nginx मंच में तैनात है: http://forum.nginx.org/read.php?11,218997

+0

अजीब बात है, इस लिए यदि आप नदी के ऊपर का उपयोग करें (मेजबान संकल्प) –

उत्तर

39

आप dnsmasq स्थापित करने और 127.0.0.1 करने के लिए अपने समाधानकर्ता सेट करके ऐसा मिल सकता है। असल में यह आपके स्थानीय DNS को एक रिज़ॉल्वर के रूप में उपयोग करता है, लेकिन यह केवल उन चीज़ों को हल करता है जो इसके बारे में जानते हैं (उन चीज़ों में से आपके /etc/hosts) और शेष को आपके डिफ़ॉल्ट DNS पर अग्रेषित किया जाता है।

+0

मुझे आश्चर्य है कि क्यों यह सही जवाब –

+5

के रूप में चिह्नित नहीं किया गया है लेकिन दुर्भाग्य से 'dnsmasq' स्वचालित रूप से' hosts' फ़ाइल में परिवर्तन का पता लगाने नहीं करता है काम कर रहा है। आपको 'HUP' भेजना होगा। – Mitar

3

/etc/hosts सामग्री की प्रतिलिपि बनाने के लिए, Nginx मानचित्र का उपयोग करने के लिए एक वर्कअराउंड है।

map $wanted_host $wanted_host_ip 
{ 
    default 127.0.0.1; 
    b.dev.local X.X.X.X; 
    a.dev.local X.X.X.X; 
} 

server 
{ 
    listen    80; 
    server_name   ~^(?P<wanted_port>[0-9]+?)-(?P<wanted_host>.+?)\.HOSTNAME$; 

    location/
    { 
     proxy_pass http://$wanted_host_ip:$wanted_port; 

    } 
} 

यह wanted_host_ip करने के लिए wanted_host मैप कर देंगे, जो रिसोल्वर की तरह।

संबंधित मुद्दे

 संबंधित मुद्दे