डुप्लीकेट हेडर की अनुमति देने के लिए, मैसेज प्रोसेसर को कॉन्फ़िगर करना

आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं.
जानकारी

एचटीटीपी स्पेसिफ़िकेशन RFC 7230, सेक्शन 3.2.2: फ़ील्ड का क्रम के मुताबिक, Apigee Edge को उम्मीद है कि क्लाइंट से मिले एचटीटीपी अनुरोध या बैकएंड सर्वर से मिले एचटीटीपी रिस्पॉन्स में, एक ही हेडर को एक से ज़्यादा बार पास न किया गया हो. ऐसा तब तक नहीं किया जाना चाहिए, जब तक कि उस हेडर के लिए कोई अपवाद न हो और उसे डुप्लीकेट होने की अनुमति न हो.

Apigee Edge, डिफ़ॉल्ट रूप से डुप्लीकेट और कई वैल्यू को ज़्यादातर एचटीटीपी हेडर में पास करने की अनुमति देता है. हालांकि, यह कुछ ऐसे हेडर की अनुमति नहीं देता है जो ऐसे हेडर जिनमें डुप्लीकेट और एक से ज़्यादा वैल्यू नहीं हो सकतीं में दिए गए हैं. इसलिए:

  • अगर क्लाइंट किसी एचटीटीपी अनुरोध को एक से ज़्यादा बार या ऐसे एचटीटीपी हेडर के लिए कई वैल्यू के साथ भेजता है जिन्हें Apigee Edge में डुप्लीकेट/कई वैल्यू रखने की अनुमति नहीं है, तो आपको गड़बड़ी कोड protocol.http.DuplicateHeader के साथ 400 Bad Request मिलेगा.
  • इसी तरह, अगर बैकएंड सर्वर किसी एचटीटीपी रिस्पॉन्स में किसी हेडर को एक से ज़्यादा बार भेजता है या Apigee Edge में डुप्लीकेट या एक से ज़्यादा वैल्यू रखने की अनुमति नहीं है, तो आपको गड़बड़ी कोड protocol.http.DuplicateHeader के साथ 502 Bad Gateway मिलेगा

इन गड़बड़ियों को ठीक करने के लिए, सुझाया गया तरीका यह है कि क्लाइंट ऐप्लिकेशन और बैकएंड सर्वर को ठीक किया जाए, ताकि वे डुप्लीकेट हेडर न भेजें. साथ ही, वे RFC 7230, सेक्शन 3.2.2: फ़ील्ड का क्रम से जुड़ी ज़रूरी शर्तों का पालन करें. इस बारे में, समस्या हल करने से जुड़ी इन प्लेबुक में बताया गया है:

हालांकि, कुछ मामलों में आपको डुप्लीकेट और कुछ एचटीटीपी हेडर के लिए एक से ज़्यादा वैल्यू शामिल करने के लिए, अपवाद जोड़ना पड़ सकता है. ऐसी स्थितियों में, मैसेज प्रोसेसर लेवल पर HTTPHeader.HEADER_NAME प्रॉपर्टी सेट करके, डुप्लीकेट हेडर और किसी खास एचटीटीपी हेडर के लिए एक से ज़्यादा वैल्यू इस्तेमाल करने की अनुमति दी जा सकती है.

इस दस्तावेज़ में, इस प्रॉपर्टी के बारे में जानकारी दी गई है. इसमें बताया गया है कि ऊपर बताई गई गड़बड़ियों से बचने के लिए, इस प्रॉपर्टी को कैसे चालू करें. साथ ही, इसके बारे में सबसे सही तरीके बताए गए हैं.

डुप्लीकेट और एक से ज़्यादा वैल्यू की अनुमति देने के लिए, एचटीटीपी हेडर प्रॉपर्टी

Apigee Edge, एचटीटीपी हेडर के लिए डुप्लीकेट और एक से ज़्यादा वैल्यू की अनुमति देने के व्यवहार को कंट्रोल करने के लिए, ये दो प्रॉपर्टी उपलब्ध कराता है. ध्यान दें कि इन्हें सिर्फ़ मैसेज प्रोसेसर पर कॉन्फ़िगर किया जा सकता है. इसके लिए, Edge को कॉन्फ़िगर करने का तरीका में बताया गया टोकन सिंटैक्स इस्तेमाल करें.

प्रॉपर्टी का नाम ब्यौरा अनुमति वाली वैल्यू
HTTPHeader.ANY

इस प्रॉपर्टी से पता चलता है कि सभी एचटीटीपी हेडर के लिए डुप्लीकेट या एक से ज़्यादा वैल्यू इस्तेमाल करने की अनुमति है या नहीं. इनमें क्लाइंट के एचटीटीपी अनुरोध या Apigee Edge को बैकएंड सर्वर से भेजे गए एचटीटीपी जवाब के हिस्से के तौर पर भेजे गए कस्टम हेडर शामिल हैं.

डिफ़ॉल्ट वैल्यू:

multiValued, allowDuplicates,

  1. blank: एचटीटीपी हेडर के लिए डुप्लीकेट और एक से ज़्यादा वैल्यू इस्तेमाल करने की अनुमति नहीं है.
  2. multiValued: इस हेडर का इस्तेमाल, एक से ज़्यादा वैल्यू वाले हेडर को कई हेडर में बांटने के लिए किया जाता है. एचटीटीपी हेडर के लिए एक से ज़्यादा वैल्यू इस्तेमाल की जा सकती हैं. हालांकि, डुप्लीकेट वैल्यू इस्तेमाल करने की अनुमति नहीं है. multiValued वैल्यू चालू है. इसका मतलब है कि test-header=a,b को test-header=a और test-header=b. में बदल दिया जाएगा
  3. allowDuplicates: इससे एक ही नाम वाले कई (डुप्लीकेट) एचटीटीपी हेडर इस्तेमाल किए जा सकते हैं.
  4. multiValued, allowDuplicates: एचटीटीपी हेडर के लिए, एक से ज़्यादा वैल्यू और डुप्लीकेट वैल्यू, दोनों इस्तेमाल की जा सकती हैं.

HTTPHeader.HEADER_NAME

इस प्रॉपर्टी का इस्तेमाल, HTTPHeader.ANY में तय किए गए किसी हेडर के व्यवहार को बदलने के लिए किया जाता है

जैसा ऊपर बताया गया है.

ऐसे हेडर जिनमें डुप्लीकेट वैल्यू और एक से ज़्यादा वैल्यू इस्तेमाल करने की अनुमति नहीं है

जैसा कि पहले बताया गया है, Apigee Edge में डिफ़ॉल्ट रूप से, ज़्यादातर एचटीटीपी हेडर के लिए डुप्लीकेट और एक से ज़्यादा वैल्यू इस्तेमाल करने की अनुमति होती है. ऐसा इसलिए है, क्योंकि प्रॉपर्टी HTTPHeader.ANY को multiValued, allowDuplicates. वैल्यू के साथ कॉन्फ़िगर किया गया है

कॉन्फ़िगरेशन बदला गया

कुछ खास हेडर के लिए, डिफ़ॉल्ट कॉन्फ़िगरेशन को इनमें से किसी एक तरीके का इस्तेमाल करके बदला जाता है:

  • HTTPHeader.HEADER_NAME=multiValued, allowDuplicates

    इस कॉन्फ़िगरेशन से, डिफ़ॉल्ट ऐक्शन और सेटिंग में कोई बदलाव नहीं होता. इसका मतलब है कि इस हेडर में डुप्लीकेट वैल्यू और एक से ज़्यादा वैल्यू शामिल की जा सकती हैं

    .
  • HTTPHeader.HEADER_NAME=

    इस कॉन्फ़िगरेशन से, डिफ़ॉल्ट ऐक्शन और सेटिंग बदल जाती हैं. इसका मतलब है कि किसी खास हेडर के लिए, डुप्लीकेट और एक से ज़्यादा वैल्यू इस्तेमाल नहीं की जा सकतीं.

ऐसे हेडर तय करना जिनमें डुप्लीकेट और एक से ज़्यादा वैल्यू नहीं हो सकतीं

इस सेक्शन में, यह पता लगाने का तरीका बताया गया है कि:

  • ऐसे हेडर जिनमें डुप्लीकेट और एक से ज़्यादा वैल्यू नहीं हो सकतीं . ये हेडर, Apigee Edge Private Cloud सेटअप में इस्तेमाल किए जाते हैं.
  • पहले से मौजूद कॉन्फ़िगरेशन वाले हेडर
  1. मैसेज प्रोसेसर मशीन पर, /opt/apigee/edge-message-processor/conf डायरेक्ट्री में HTTPHeader. प्रॉपर्टी खोजें. इसे नीचे दिखाया गया है:

    grep -ri "HTTPHeader." /opt/apigee/edge-message-processor/conf
    

    आउटपुट का उदाहरण:

    # grep -ri "HTTPHeader" /opt/apigee/edge-message-processor/conf
    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.ANY=allowDuplicates, multiValued
    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Connection=allowDuplicates, multiValued
    … <snipped>
    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Host=
    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Expires=
    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Date=allowDuplicates
    …
    <snipped>
  2. कॉन्फ़िगरेशन ओवरराइट किया गया सेक्शन में बताए गए तरीके के मुताबिक, ऊपर दिए गए सैंपल आउटपुट में यह जानकारी नोट करें:
    1. एचटीटीपी हेडर Connection को फिर से लिखा जाता है, लेकिन इसमें डुप्लीकेट और कई वैल्यू शामिल की जा सकती हैं
    2. एचटीटीपी हेडर Host और Expires को फिर से लिखा गया है और इनमें डुप्लीकेट और एक से ज़्यादा वैल्यू इस्तेमाल करने की अनुमति नहीं है
    3. एचटीटीपी हेडर Date को फिर से लिखा गया है और इसमें डुप्लीकेट वैल्यू शामिल की जा सकती हैं हालांकि, इसमें एक से ज़्यादा वैल्यू शामिल करने की अनुमति नहीं है
    4. यहां दिखने वाले सभी हेडर (ऊपर दिए गए सैंपल में Connection, Host, Expires, और Date) को इस दस्तावेज़ में, पहले से मौजूद कॉन्फ़िगरेशन वाले हेडर कहा जाता है.

Apigee Edge का व्यवहार

यहां दी गई टेबल में, Apigee Edge के व्यवहार के बारे में बताया गया है. इसमें बताया गया है कि डुप्लीकेट के तौर पर और एक से ज़्यादा वैल्यू के साथ हेडर भेजे जाने पर, Apigee Edge कैसा व्यवहार करता है. यह इस बात पर निर्भर करता है कि मैसेज प्रोसेसर पर HTTPHeader प्रॉपर्टी कैसे कॉन्फ़िगर की गई हैं. इसमें HTTPHeader का उदाहरण test-header भी दिया गया है.

अनुरोध conf/http.properties+HTTPHeader.test-header= की वैल्यू के आधार पर, भेजे जा रहे HEADERS
<Blank> allowDuplicates multiValued allowDuplicates, multiValued (DEFAULT)
test‑header=a,b test‑header=a,b test‑header=a,b

protocol.http.
DuplicateHeader

हम test-header=a,b को इन हिस्सों में बांटते हैं:

  • test-header=a, और
  • test-header=b,

इसके बाद, DuplicateHeader गड़बड़ी दिखती है.

test‑header=a,b

हम test-header=a,b को इन हिस्सों में बांटते हैं:

  • test-header=a, और
  • test-header=b,

लेकिन, इसके बाद ओरिजनल फ़ॉर्म को टारगेट को भेज दिया जाता है.

test‑header=a
test‑header=b
protocol.http.
DuplicateHeader
test‑header=a
test‑header=b
protocol.http.
DuplicateHeader
test‑header=a
test‑header=b

शुरू करने से पहले

इस दस्तावेज़ में दिए गए चरणों का इस्तेमाल करने से पहले, पक्का करें कि आपको Private Cloud पर Edge के लिए प्रॉपर्टी कॉन्फ़िगर करने का तरीका पता हो. इसके बारे में Edge को कॉन्फ़िगर करने का तरीका लेख में बताया गया है.

हेडर के लिए, allowDuplicates और कई वैल्यू कॉन्फ़िगर करना

डुप्लीकेट और एक से ज़्यादा वैल्यू की अनुमति देने के लिए,एचटीटीपी हेडर प्रॉपर्टी में बताया गया है कि HTTPHeader.ANY = allowDuplicates, multiValued प्रॉपर्टी की वैल्यू का मतलब है कि Apigee Edge में सभी हेडर को डुप्लीकेट और एक से ज़्यादा वैल्यू रखने की अनुमति है. हालांकि, कुछ हेडर ऐसे होते हैं जिनकी वैल्यू को साफ़ तौर पर बदला जाता है, ताकि डुप्लीकेट हेडर या इस प्रॉपर्टी HTTPHeader.HEADER_NAME का इस्तेमाल करके कई वैल्यू की अनुमति न दी जा सके.

इस सेक्शन में, HTTPHeader.HEADER_NAME प्रॉपर्टी को कॉन्फ़िगर करने का तरीका बताया गया है, ताकि मैसेज प्रोसेसर पर मौजूद किसी भी एचटीटीपी हेडर के लिए डुप्लीकेट और एक से ज़्यादा वैल्यू इस्तेमाल की जा सकें. इसके लिए, Edge को कॉन्फ़िगर करने का तरीका में बताए गए सिंटैक्स के मुताबिक टोकन का इस्तेमाल करें.

इस सेक्शन में, हम Expires (और myheader) को उदाहरण के तौर पर इस्तेमाल करेंगे. यह ऐसा हेडर है जिसके लिए हमें डुप्लीकेट और कई वैल्यू की अनुमति देनी है. इसके बारे में यहां बताया गया है:

  1. प्रॉपर्टी की मौजूदा वैल्यू का पता लगाएंHTTPHeaderHEADER_NAME ताकि यह पक्का किया जा सके कि डुप्लीकेट और एक से ज़्यादा वैल्यू की अनुमति देने के लिए, यह पहले से चालू नहीं है. इसके लिए, इस कमांड का इस्तेमाल करें:
    grep -ri "HTTPHeader.HEADER_NAME" /opt/apigee/edge-message-processor/conf
    

    उदाहरण के लिए, अगर आपको Expires हेडर के लिए प्रॉपर्टी सेट करनी है, तो मैसेज प्रोसेसर पर HTTPHeader.Expires टोकन की मौजूदा वैल्यू देखें:

    grep -ri "HTTPHeader.Expires" /opt/apigee/edge-message-processor/conf
    

    ऊपर दिए गए निर्देश का आउटपुट इनमें से कोई एक होगा:

    1. अगर प्रॉपर्टी को ब्लैंक पर सेट किया जाता है, तो इसका मतलब है कि वैल्यू को बदल दिया गया है. साथ ही, यह पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर है, ताकि डुप्लीकेट हेडर और एक से ज़्यादा वैल्यू की अनुमति न दी जा सके. इसका मतलब है कि Apigee को भेजे जाने वाले एचटीटीपी अनुरोध या एचटीटीपी रिस्पॉन्स में, Expires हेडर को एक से ज़्यादा बार नहीं भेजा जा सकता.
    2. अगर किसी प्रॉपर्टी के लिए कोई हिट नहीं है, तो इसका मतलब है कि वैल्यू को बदला नहीं गया है. साथ ही, यह पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर नहीं है. इसका मतलब है कि किसी खास हेडर को Apigee Edge को भेजे गए एचटीटीपी अनुरोध या एचटीटीपी रिस्पॉन्स के हिस्से के तौर पर, एक से ज़्यादा बार भेजा जा सकता है. डुप्लीकेट हेडर भेजने की अनुमति है.
    3. अगर प्रॉपर्टी को allowDuplicates, multiValued वैल्यू के साथ सेट किया जाता है, तो इसका मतलब है कि वैल्यू को साफ़ तौर पर बदला गया है . साथ ही, यह पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर है. इसका मतलब है कि इस हेडर को Apigee को भेजे गए एचटीटीपी अनुरोध या Apigee से मिले एचटीटीपी रिस्पॉन्स के हिस्से के तौर पर, एक से ज़्यादा बार भेजा जा सकता है. डुप्लीकेट हेडर भेजने की अनुमति है.

    खोज के लिए इस्तेमाल होने वाले निर्देश का सैंपल आउटपुट:

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Expires=

    ऊपर दिए गए सैंपल आउटपुट से पता चलता है कि HTTPHeader.Expires प्रॉपर्टी को खाली पर सेट किया गया है. इसका मतलब है कि हेडर Expires के लिए, प्रॉपर्टी is overwritten को डुप्लीकेट या एक से ज़्यादा वैल्यू की अनुमति न देने के लिए सेट किया गया है.

  2. अगर आपको लगता है कि किसी खास हेडर से जुड़ी प्रॉपर्टी को डुप्लीकेट या एक से ज़्यादा वैल्यू की अनुमति न देने के लिए, साफ़ तौर पर ओवरराइट किया गया है, जैसा कि ऊपर दिए गए उदाहरण में दिखाया गया है, तो सिर्फ़ तब यह तरीका अपनाएं. अगर इसे साफ़ तौर पर नहीं बदला गया है, तो इस सेक्शन के बाकी चरण छोड़ दें.
  3. बदलाव करें पर टैप करें. अगर यह फ़ाइल मौजूद नहीं है, तो इसे बनाया जा सकता है:
    /opt/apigee/customer/application/message-processor.properties

    उदाहरण के लिए, vi का इस्तेमाल करके फ़ाइल खोलने के लिए, यह डालें:

    vi /opt/apigee/customer/application/message-processor.properties
    
  4. इस फ़ॉर्मैट में एक लाइन जोड़ें:
    conf_http_HTTPHeader.Expires=allowDuplicates, multiValued
  5. बदलावों को सेव करें.
  6. पक्का करें कि प्रॉपर्टी फ़ाइल का मालिकाना हक apigee उपयोगकर्ता के पास हो. अगर ऐसा नहीं है, तो यह कमांड चलाएं:

    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  7. मैसेज प्रोसेसर को रीस्टार्ट करें:

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    

    ट्रैफ़िक पर असर डाले बिना रीस्टार्ट करने के लिए, ट्रैफ़िक पर असर डाले बिना मैसेज प्रोसेसर को रोलिंग रीस्टार्ट करना लेख पढ़ें.

  8. अगर आपके पास एक से ज़्यादा मैसेज प्रोसेसर हैं, तो ऊपर दिया गया तरीका सभी मैसेज प्रोसेसर पर दोहराएं.

यह पुष्टि करना कि हेडर को डुप्लीकेट और एक से ज़्यादा वैल्यू के लिए कॉन्फ़िगर किया गया है

इस सेक्शन में, यह पुष्टि करने का तरीका बताया गया है कि किसी हेडर के लिए HTTPHeader.HEADER_NAME प्रॉपर्टी को अपडेट कर दिया गया है, ताकि मैसेज प्रोसेसर पर डुप्लीकेट की अनुमति दी जा सके.

हम Expires को हेडर के उदाहरण के तौर पर इस्तेमाल करेंगे. साथ ही, यह देखेंगे कि इससे जुड़ी प्रॉपर्टी HTTPHeader.Expires अपडेट की गई है या नहीं.

आपने मैसेज प्रोसेसर पर वैल्यू अपडेट करने के लिए, conf_http_HTTPHeader.Expires टोकन का इस्तेमाल किया है. हालांकि, आपको यह पुष्टि करनी होगी कि HTTPHeader.Expires प्रॉपर्टी को नई वैल्यू के साथ सेट किया गया है या नहीं.

  1. मैसेज प्रोसेसर मशीन पर, HTTPHeader.HEADER_NAME डायरेक्ट्री में /opt/apigee/edge-message-processor/conf प्रॉपर्टी खोजें. इसके बाद, देखें कि इसे नीचे दिखाए गए तरीके से नई वैल्यू के साथ सेट किया गया है या नहीं:
    grep -ri "HTTPHeader.HEADER_NAME" /opt/apigee/edge-message-processor/conf
    

    उदाहरण के लिए, अगर आपको यह देखना है कि प्रॉपर्टी HTTPHeader.Expires को नई वैल्यू के साथ सेट किया गया है या नहीं, तो यह कमांड चलाएं:

    grep -ri "HTTPHeader.Expires" /opt/apigee/edge-message-processor/conf
    
  2. अगर मैसेज प्रोसेसर पर HTTPHeader.HEADER_NAME के लिए नई वैल्यू सेट हो जाती है, तो ऊपर दिया गया निर्देश, http.properties फ़ाइल में नई वैल्यू दिखाता है.
  3. allowDuplicates और multiValued को कॉन्फ़िगर करने के बाद, ऊपर दी गई कमांड का सैंपल नतीजा यहां दिया गया है:

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Expires=allowDuplicates, multiValued
  4. ऊपर दिए गए उदाहरण में, ध्यान दें कि प्रॉपर्टी HTTPHeader.Expires को http.properties में नई वैल्यू allowDuplicates, multiValued के साथ सेट किया गया है. इससे पता चलता है कि Message Processor पर, डुप्लीकेट और HTTPHeader में एक से ज़्यादा वैल्यू इस्तेमाल करने की अनुमति देने वाला व्यवहार कॉन्फ़िगर हो गया है.
  5. अगर आपको अब भी प्रॉपर्टी HTTPHeader.HEADER_NAME की पुरानी वैल्यू दिख रही है, तो पुष्टि करें कि आपने हेडर के लिए allowDuplicates और कई वैल्यू कॉन्फ़िगर करना में बताए गए सभी चरणों का सही तरीके से पालन किया हो. अगर आपने कोई चरण छोड़ दिया है, तो सभी चरणों को फिर से सही तरीके से दोहराएं.

    पक्का करें कि आपकी प्रॉक्सी उम्मीद के मुताबिक काम कर रही हों. खास तौर पर, अगर प्रॉक्सी में हेडर पाने और सेट करने के लिए कोई लॉजिक मौजूद है.

  6. अगर अब भी प्रॉपर्टी में बदलाव नहीं किया जा सकता, तो Apigee Edge की सहायता टीम से संपर्क करें

हेडर के लिए allowDuplicates को बंद करना

इस सेक्शन में, मैसेज प्रोसेसर पर किसी एचटीटीपी हेडर के लिए, प्रॉपर्टी HTTPHeader.{Headername} को कॉन्फ़िगर करने का तरीका बताया गया है, ताकि डुप्लीकेट और एक से ज़्यादा वैल्यू की अनुमति न दी जाए. इसके लिए, Edge को कॉन्फ़िगर करने का तरीका में बताए गए सिंटैक्स के मुताबिक टोकन का इस्तेमाल करें.

इस सेक्शन में, हम Expires (और myheader) को उदाहरण के तौर पर इस्तेमाल करेंगे. यह ऐसा हेडर है जिसके लिए हम डुप्लीकेट वैल्यू की अनुमति नहीं देना चाहते. इसके बारे में यहां बताया गया है:

  1. HTTPHeaderHEADER_NAMEप्रॉपर्टी की मौजूदा वैल्यू का पता लगाएं, ताकि यह पक्का किया जा सके कि डुप्लीकेट और एक से ज़्यादा वैल्यू की अनुमति देने के लिए, इसे पहले से बंद न किया गया हो. इसके लिए, यह कमांड इस्तेमाल करें:
    grep -ri "HTTPHeader.HEADER_NAME" /opt/apigee/edge-message-processor/conf
    

    उदाहरण के लिए, अगर आपको Expires हेडर के लिए प्रॉपर्टी सेट करनी है, तो मैसेज प्रोसेसर पर HTTPHeader.Expires टोकन की मौजूदा वैल्यू देखें:

    grep -ri "HTTPHeader.Expires" /opt/apigee/edge-message-processor/conf
    

    ऊपर दिए गए निर्देश का आउटपुट इनमें से कोई एक होगा:

    1. अगर प्रॉपर्टी को ब्लैंक पर सेट किया जाता है, तो इसका मतलब है कि वैल्यू is overwritten to NOT to allow duplicate headers and multiple values. इसका मतलब है कि आपको Apigee को भेजे जाने वाले एचटीटीपी अनुरोध या एचटीटीपी रिस्पॉन्स में, Expires हेडर को एक से ज़्यादा बार भेजने की अनुमति नहीं है.
    2. अगर किसी प्रॉपर्टी के लिए कोई हिट नहीं है, तो इसका मतलब है कि वैल्यू को बदला नहीं गया है. साथ ही, यह पहले से मौजूद कॉन्फ़िगरेशन वाला NOT हेडर है. इसका मतलब है कि किसी खास हेडर को Apigee Edge को भेजे गए एचटीटीपी अनुरोध या Apigee Edge से मिले एचटीटीपी रिस्पॉन्स के हिस्से के तौर पर, एक से ज़्यादा बार भेजा जा सकता है. डुप्लीकेट हेडर भेजने की अनुमति है.
    3. अगर प्रॉपर्टी को allowDuplicates, multiValued वैल्यू के साथ सेट किया जाता है, तो इसका मतलब है कि वैल्यू को बदला गया है और यह मौजूदा कॉन्फ़िगरेशन है. हालांकि, इसका मतलब यह है कि Apigee को भेजे गए एचटीटीपी अनुरोध या एचटीटीपी रिस्पॉन्स के हिस्से के तौर पर, इस हेडर को एक से ज़्यादा बार भेजा जा सकता है. डुप्लीकेट हेडर भेजने की अनुमति है.

    आउटपुट का पहला सैंपल

    खोज कमांड का पहला सैंपल आउटपुट:

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Expires=allowDuplicates, multiValued

    सैंपल आउटपुट से पता चलता है कि प्रॉपर्टी HTTPHeader.Expires को allowDuplicates, multiValued पर सेट किया गया है. इसका मतलब है कि हेडर Expires के लिए, प्रॉपर्टी को डुप्लीकेट या एक से ज़्यादा वैल्यू की अनुमति देने के लिए ओवरराइट किया गया है.

    आउटपुट का दूसरा उदाहरण

    खोज कमांड का दूसरा सैंपल और आउटपुट

    grep -ri "HTTPHeader.myheader" /opt/apigee/edge-message-processor/conf
    

    सैंपल आउटपुट में कोई आउटपुट नहीं दिखता. इसका मतलब है कि प्रॉपर्टी HTTPHeader.myheader को डिफ़ॉल्ट रूप से allowDuplicates, multiValued पर सेट किया गया है. इसका यह भी मतलब है कि हेडर myheader के लिए, प्रॉपर्टी को बदला नहीं गया है ,

  2. अगर आपको इनमें से कोई समस्या दिखती है, तो इस सेक्शन में दिए गए बाकी चरण पूरे करें:
    1. खास हेडर से जुड़ी प्रॉपर्टी को बदलकर, डुप्लीकेट और एक से ज़्यादा वैल्यू इस्तेमाल करने की अनुमति दी जाती है. जैसा कि ऊपर सैंपल आउटपुट #1 में दिखाया गया है (पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर)
    2. ऊपर दिए गए सैंपल आउटपुट #2 में दिखाए गए हेडर से जुड़ी प्रॉपर्टी के लिए कोई हिट नहीं है. यह पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर नहीं है

    अगर आपको ऐसा नहीं करना है, तो इस सेक्शन के बाकी चरण छोड़ दें.

  3. इस फ़ाइल में बदलाव करो. अगर यह मौजूद नहीं है, तो इसे बनाया जा सकता है.
    /opt/apigee/customer/application/message-processor.properties

    उदाहरण के लिए, vi का इस्तेमाल करके फ़ाइल खोलने के लिए, यह डालें:

    vi /opt/apigee/customer/application/message-processor.properties
    
  4. प्रॉपर्टी फ़ाइल में, इस फ़ॉर्मैट में एक लाइन जोड़ें:

    पहले से मौजूद कॉन्फ़िगरेशन

    पहली स्थिति: पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर:

    conf_http_HTTPHeader.Expires=

    पहले से कोई कॉन्फ़िगरेशन मौजूद नहीं है

    दूसरी स्थिति: पहले से मौजूद कॉन्फ़िगरेशन के साथ हेडर नहीं है:

    conf/http.properties+HTTPHeader.myheader=
  5. बदलावों को सेव करें.
  6. पक्का करें कि प्रॉपर्टी फ़ाइल का मालिकाना हक apigee उपयोगकर्ता के पास हो. अगर ऐसा नहीं है, तो यह कमांड चलाएं:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  7. मैसेज प्रोसेसर को रीस्टार्ट करें:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    

    ट्रैफ़िक पर असर डाले बिना रीस्टार्ट करने के लिए, ट्रैफ़िक पर असर डाले बिना मैसेज प्रोसेसर को रोलिंग रीस्टार्ट करना लेख पढ़ें.

  8. अगर आपके पास एक से ज़्यादा मैसेज प्रोसेसर हैं, तो ऊपर दिया गया तरीका सभी मैसेज प्रोसेसर पर दोहराएं.

इस बात की पुष्टि करना कि हेडर को इस तरह कॉन्फ़िगर किया गया है कि डुप्लीकेट और एक से ज़्यादा वैल्यू की अनुमति न हो

इस सेक्शन में, यह पुष्टि करने का तरीका बताया गया है कि किसी हेडर के लिए HTTPHeader.HEADER_NAME प्रॉपर्टी को अपडेट कर दिया गया है, ताकि मैसेज प्रोसेसर पर डुप्लीकेट मैसेज न दिखें.

हम Expires (और myheader) को हेडर के उदाहरण के तौर पर इस्तेमाल करेंगे. साथ ही, यह देखेंगे कि इससे जुड़ी प्रॉपर्टी HTTPHeader.Expires (और HTTPHeader.myheader) अपडेट हुई है या नहीं.

  1. मैसेज प्रोसेसर मशीन पर, /opt/apigee/edge-message- processor/conf डायरेक्ट्री में HTTPHeader.HEADER_NAME प्रॉपर्टी खोजें. इसके बाद, देखें कि इसे नीचे दिखाए गए तरीके से नई वैल्यू के साथ सेट किया गया है या नहीं:

    grep -ri "HTTPHeader.HEADER_NAME" /opt/apigee/edge-message-processor/conf
    

    उदाहरण के लिए, अगर आपको यह देखना है कि प्रॉपर्टी HTTPHeader.Expires को नई वैल्यू के साथ सेट किया गया है, तो यह कमांड चलाएं:

    पहले से मौजूद कॉन्फ़िगरेशन

    grep -ri "HTTPHeader.Expires" /opt/apigee/edge-message-processor/conf
    

    पहले से कोई कॉन्फ़िगरेशन मौजूद नहीं है

    grep -ri "HTTPHeader.myheader" /opt/apigee/edge-message-processor/conf
    
  2. अगर मैसेज प्रोसेसर पर HTTPHeader.HEADER_NAME के लिए, नया एचटीटीपी हेडर वैल्यू सेट हो जाती है, तो ऊपर दिया गया कमांड, http.properties फ़ाइल में नई वैल्यू दिखाता है.
  3. allowDuplicates को बंद करने के बाद, ऊपर दिए गए निर्देश से मिला नतीजा यहां दिया गया है:

    पहले से मौजूद कॉन्फ़िगरेशन

    पहला विकल्प: Expires हेडर (पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर)

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Expires=

    पहले से कोई कॉन्फ़िगरेशन मौजूद नहीं है

    Scenario #2: myheader Header (not a header with pre-existing config)

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.myheader=
  4. ऊपर दिए गए उदाहरण में, ध्यान दें कि प्रॉपर्टी HTTPHeader.Expires ( और HTTPHeader.myheader ) को नई वैल्यू {blank} in http.properties के साथ सेट किया गया है. इससे पता चलता है कि मैसेज प्रोसेसर पर, डुप्लीकेट और खास एचटीटीपी हेडर Expires (और myheader) के लिए एक से ज़्यादा वैल्यू इस्तेमाल करने की सुविधा बंद कर दी गई है.
  5. अगर आपको अब भी प्रॉपर्टी HTTPHeader.Expires (or HTTPHeader.myheader) के लिए पुरानी वैल्यू दिख रही है, तो पुष्टि करें कि आपने हेडर के लिए allowDuplicates और कई वैल्यू कॉन्फ़िगर करना में बताए गए सभी चरणों का सही तरीके से पालन किया हो. अगर आपने कोई चरण छोड़ दिया है, तो सभी चरणों को फिर से सही तरीके से दोहराएं.

    पक्का करें कि आपकी प्रॉक्सी उम्मीद के मुताबिक काम कर रही हों. खास तौर पर, अगर प्रॉक्सी में हेडर पाने और सेट करने के लिए कोई लॉजिक मौजूद है.

  6. अगर अब भी प्रॉपर्टी में बदलाव नहीं किया जा सकता, तो Apigee Edge की सहायता टीम से संपर्क करें.