एक फ़ाइल की सेवा के बिना Nginx कॉन्फ़िगरेशन से 200 के साथ उत्तर दें


122

मैंने इस कॉन्फ़िगरेशन लाइन के साथ किसी भी फ़ाइल की सेवा के बिना अपाचे को 200 प्रतिक्रिया भेजने के लिए कॉन्फ़िगर किया है

Redirect 200 /hello

क्या मैं यह Nginx के साथ कर सकता हूं? मैं एक फ़ाइल परोसना नहीं चाहता, मैं बस यह चाहता हूं कि सर्वर 200 के साथ प्रतिक्रिया दे (मैं केवल अनुरोध को लॉग कर रहा हूं)।

मुझे पता है कि मैं एक इंडेक्स फाइल को जोड़ सकता हूं और एक ही चीज को प्राप्त कर सकता हूं, लेकिन इसे कॉन्फिग में करने का मतलब है कि एक कम चीज है जो गलत हो सकती है।

जवाबों:


261

हाँ तुम कर सकते हो

location / {
    return 200 'gangnam style!';
    # because default content-type is application/octet-stream,
    # browser will offer to "save the file"...
    # if you want to see reply in browser, uncomment next line 
    # add_header Content-Type text/plain;
}

1
मैं प्रतिक्रिया में एक नई पंक्ति कैसे जोड़ूं? gangnam\nstyle?
13

1
निश्चित रूप से @tback, सही आप कर रहे हैं
cadmi

4
add_header मेरे लिए काम नहीं करता है क्योंकि यह पुराने 'सामग्री-प्रकार' को बदलने के बजाय एक और हेडर जोड़ता है। मेरी प्रतिक्रिया में मेरे पास 2 'सामग्री-प्रकार' हेडर हैं: $ curl -v localhost / healthcheck / h1_pio> GET / healthcheck / h1_pio HTTP / 1.1> उपयोगकर्ता-एजेंट: curl / 7.35.0> होस्ट: localhost> Accept: / > <HTTP / 1.1 200 OK <Date: Tue, 11 Oct 2016 13:27:53 GMT <सामग्री-प्रकार: एप्लिकेशन / ऑक्टेट-स्ट्रीम <सामग्री-लंबाई: 25 <कनेक्शन: रखना-जीवित करना
jmcollin92

1
@ jmcollin92 आपकी टिप्पणी का उस प्रश्न से कोई लेना-देना नहीं है जो पूछा गया था और जिसका उत्तर दिया गया था। क्योंकि आपके पास स्पष्ट रूप से किसी प्रकार के प्रॉक्सी_पास, फ़ास्गी_पास, जो कुछ भी है ... लेकिन मैं अभी भी स्थान / स्वास्थ्य परीक्षण / एच 1_पियो {# प्रॉक्सी_पास ब्लाब्लाब्ला का जवाब देता हूं जो आपको चाहिए; प्रॉक्सी_हाइड_हाइडर सामग्री-प्रकार; add_header सामग्री-प्रकार अनुप्रयोग / json; } भविष्य में, आपके सवाल सही ढंग से पूछ सकते हैं और उचित स्थान पर
cadmi

6
@ jmcollin92 ऐसा हो सकता है यदि आपके पास मौजूदा default_type कहीं और घोषित किया गया हो। आप निर्देश default_type text/plain;के स्थान पर स्थान ब्लॉक के अंदर का उपयोग करके इसे ओवरराइड कर सकते हैं add_header
tjb1982

20

आपको 204 का उपयोग करने की आवश्यकता है क्योंकि Nginx 200 को बिना किसी प्रतिक्रिया शरीर के साथ अनुमति नहीं देगा। 204 भेजने के लिए आप बस उचित स्थान पर रिटर्न निर्देश का उपयोग करें return 204;


यदि आप इसे एक ब्राउज़र के माध्यम से देखने की कोशिश करते हैं, तो यह ऐसा लगेगा जैसे उसने कुछ नहीं किया। वह जानबूझकर है। आपने (204) कुछ भी नहीं दिया, यह कुछ भी प्रदर्शित नहीं करता है। यह साबित करने के लिए कि आपने 204 सेवा दी है, का उपयोग करें curl
jnovack

4

स्थिति कोड परिभाषाओं के अनुसार, मेरा मानना ​​है कि आप चाहते हैं कि यह 204 हो, और 200 नहीं। 200 प्रतिसाद में एक संसाधन के साथ रहने की आवश्यकता है, या मुझे संदेह है कि अधिकांश समझदार ब्राउज़र इससे भ्रमित होंगे। दूसरा जो आप उपयोग कर सकते हैं वह 304 है, जो कैश्ड सामग्री के लिए है।

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html


ज़रूर, इसे 204 बनाओ, मैं इसे कैसे करूँ? हालाँकि मुझे बहुत संदेह है कि कोई भी ब्राउज़र किसी खाली शरीर से भ्रमित होगा।
Theo

1
एक खाली शरीर अभी भी एक प्रतिक्रिया है, एक वस्तु के साथ, जैसे कि एक खाली index.html। आपने जो पूछा है, वह 200 प्रतिसाद प्रदान करने के लिए है जिसमें कोई संसाधन संलग्न नहीं है (कोई फ़ाइल नहीं दी गई है)। के रूप में यह वास्तव में nginx पर करने के लिए के रूप में, मैं इसे अपने आप को देखने की जरूरत है, मैं केवल एक बार यह अपाचे पर किया है, और मैं हाथ से याद नहीं कर सकते।
सैंड्रोइड

304 ऐसा लगता है कि यह डिबगिंग और अस्थायी रिटर्न जैसी चीजों के लिए सभी गलत संकेत भेजेगा।
Kzqai

2

@Martin Fjordval के उत्तर को पूरा करने के लिए, यदि आप हेल्थकेयर करने के लिए इस तरह के कॉन्फ़िगरेशन का उपयोग कर रहे हैं तो सावधान रहें।

जबकि एक 204HTTP कोड एक स्वास्थ्य जांच (बिना किसी सामग्री के सफलता संकेत) के लिए शब्दार्थ है, कुछ सेवाएं इसे सफल नहीं मानती हैं।

अर्थात्, मेरे पास Google क्लाउड लोड-बैलेंसर्स के साथ समस्या थी ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.