क्या मैं सभी निर्देशिका अनुरोधों को nginx में किसी एकल फ़ाइल में बदल सकता हूँ?


9

मैं यह पता लगाने की कोशिश कर रहा हूं कि किसी विशेष निर्देशिका में किए गए सभी अनुरोधों को कैसे लेना है और नगीनेक्स में एक रीडायरेक्ट के बिना एक जसन स्ट्रिंग वापस करना है।

उदाहरण:

curl -i http://example.com/api/call1/

अपेक्षित परिणाम:

HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Type: application/json
Date: Fri, 13 Apr 2012 23:48:21 GMT
Last-Modified: Fri, 13 Apr 2012 22:58:56 GMT
Server: nginx
X-UA-Compatible: IE=Edge,chrome=1
Content-Length: 38
Connection: keep-alive

{"logout": true}

यहाँ मैं अपने nginx conf में अब तक क्या है:

location ~ ^/api/(.*)$ {
    index /api_logout.json;
    alias /path/to/file/api_logout.json;
    types { }
    default_type "application/json; charset=utf-8";
    break;
}

हालाँकि, जब मैं अनुरोध करने की कोशिश करता हूं तो सामग्री-प्रकार छड़ी नहीं करता है:

$ curl -i http://example.com/api/call1/
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Type: application/octet-stream
Date: Fri, 13 Apr 2012 23:48:21 GMT
Last-Modified: Fri, 13 Apr 2012 22:58:56 GMT
Server: nginx
X-UA-Compatible: IE=Edge,chrome=1
Content-Length: 38
Connection: keep-alive

{"logout": true}

क्या ऐसा करने के लिए इससे अच्छा तरीका है? मैं छड़ी के लिए आवेदन / जसन प्रकार कैसे प्राप्त कर सकता हूं?

संपादित करें: समाधान!

मुझे लगा कि आप केवल रिटर्न स्टेटमेंट में मैनुअल स्ट्रिंग्स भेज सकते हैं, इसलिए मैंने ऐसा किया था कि इसके बजाय उपनाम का उपयोग किया गया था!

अंतिम कोड जिसका मैंने उपयोग किया:

location /api {
    types { }
    default_type "application/json";
    return 200 "{\"logout\" : true"}";
}

जवाबों:


2

आप कैटचेल व्यवहार प्राप्त करने के बजाय एक पुनर्लेखन का उपयोग कर सकते हैं।

location /logout.json {
    alias /tmp/logout.json;
    types {
        application/json json;
    }
}
rewrite ^/api/.* /logout.json;

क्या यह आपको /logout.json पर पुनर्निर्देशित नहीं करता है? मैं 302 रीडायरेक्ट प्रतिक्रिया भेजने से बचने की कोशिश कर रहा हूं।
user749618

नहीं, वह आंतरिक पुनर्लेखन है । पुनर्निर्देश केवल भेजा जाता है एक निरपेक्ष स्थान निर्दिष्ट किया जाता है या एक अगर redirectया permanentध्वज को निर्दिष्ट किया जाता है।
मॉर्गन

0

बहुत आसान। संपूर्ण कॉन्फ़िगरेशन हो सकता है:

# default.conf
# Add file here: /etc/nginx/html/logout.json

server {
  listen 80;
  rewrite ^.*$ /logout.json last;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.