आप Nginx में सर्वर विशिष्ट ENV मान कैसे सेट करते हैं?


9

मैं एक प्रोजेक्ट शुरू कर रहा हूं जो डेटाबेस कनेक्शन और कुछ अन्य चीजों को सेट करने के लिए पर्यावरण चर का उपयोग करता है। (वे कॉन्फ़िगरेशन फ़ाइलों का उपयोग नहीं करना चाहते थे क्योंकि लोग लापरवाह हैं और उन्हें अधिलेखित कर देते हैं)।

वैसे भी, मैं nginx का उपयोग कर रहा हूं और जब यह env का समर्थन करता है - तो यह इसे अच्छी तरह से समर्थन नहीं करता है । आप प्रति सर्वर ब्लॉक के आधार पर एनवी मान सेट नहीं कर सकते । दूसरे शब्दों में, यह काम नहीं करेगा:

server {
    listen 80;
    server_name domain;
    env FOO = "bar";
}

आपको यह करना चाहिए:

env FOO = "bar";

http {
    server {
        listen 80;
        server_name domain;
    }
}

जिसका अर्थ है कि मेरे पास vhost- विशिष्ट मान नहीं हो सकते। इसलिए मुझे प्रत्येक साइट के लिए एक संपूर्ण vhost कॉन्फिगर बनाना होगा और केवल उसी क्षण सक्रिय होना चाहिए, जिससे मान सही तरीके से सेट हो।

क्या इसके आसपास काम करने का कोई तरीका है?


क्या nginx कॉन्फिगरेशन एप्लिकेशन के कॉन्फिगरेशन के रूप में ओवर राइटिंग के लिए अतिसंवेदनशील नहीं है? एप्लिकेशन को अनुरोधों को खिलाने के लिए यह किस मॉड्यूल का उपयोग कर रहा है?
शेन मैडेन

@ShaneMadden, nginx config प्रोजेक्ट का हिस्सा नहीं है, लेकिन इसे प्रत्येक सर्वर पर मैन्युअल रूप से बनाया जाना चाहिए। इसलिए यह ओवरराइट नहीं किया जाएगा। मैंने पूर्ण कॉन्फिग्स में क्या पोस्ट किया है - हम fastcgi_passमाणिक / php के अनुरोध को फॉरवर्ड करने के लिए भी मानक का उपयोग कर रहे हैं ।
Xeoncross

जवाबों:


13

यह पता चला है कि यदि आप फास्टगि का उपयोग कर रहे हैं, तो आप फास्टसीगी_परम से मूल्यों को पारित करके इसके चारों ओर प्राप्त कर सकते हैं ।

server {
    listen 80;
    server_name domain;

    # Pass PHP scripts to php-fastcgi listening on port 9000
    location ~ path/to/it {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param FOO "bar";
    }
}

हाँ, यही मैं सुझाव देने वाला था। मुझे इससे हराएं! (मैं आज के लिए वोटों से बाहर हूं, मैं इस जवाब को थोड़ा बढ़ा दूंगा)
शेन मैडेन

@ShaneMadden शायद आप मेरी इसमें मदद कर सकते हैं ।
Xeoncross

2
क्या server_nameगतिशील रूप से सेट करने का कोई तरीका है , हालांकि? चूंकि यह ओएस एक्स पर चलने वाला एक वर्चुअल होस्ट है, इसलिए नगनेक्स होस्ट का एक अलग आईपी है, इसलिए यह हल नहीं होता है।
taco
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.