मैं पुन: लिखने के माध्यम से HTTP POST अनुरोधों को कैसे प्राप्त करूँ?


19

मेरा iOS ऐप अभी http POST के माध्यम से डोमेन ए तक पहुंच रहा है, लेकिन मैं डोमेन बी के सभी अनुरोधों को अग्रेषित करना चाहूंगा।

अगर मैं सामान्य रूप rewrite ^/(.*)$ http://mydomain/$1 permanent;से POST डेटा का उपयोग करता हूं तो लगता है कि यह खो गया है।

मैं NginX का उपयोग करके किसी भिन्न डोमेन पर HTTP POST डेटा कैसे पास कर सकता हूं?

जवाबों:


32

इसके बजाय रिवर्स प्रॉक्सी समर्थन का उपयोग करने का प्रयास करें । एक उदाहरण locationअनुभाग होगा:

location / {
  proxy_pass      http://localhost:8080;
  proxy_redirect  http://localhost:8080/ /;
  proxy_read_timeout 60s;

  # May not need or want to set Host. Should default to the above hostname.
  proxy_set_header          Host            $host;
  proxy_set_header          X-Real-IP       $remote_addr;
  proxy_set_header          X-Forwarded-For $proxy_add_x_forwarded_for;
}

यह उदाहरण इस serverब्लॉक के सभी अनुरोधों से होकर गुजरने वाले दूसरे सर्वर तक जाएगा localhost:8080। यह बरकरार रखता POSTहै और भी अन्य अनुरोध प्रकार के भी अगर यह कभी एक मुद्दा बन जाता बनाए रखने चाहिए।

मुद्दा यह है कि बाहरी रीडायरेक्ट कभीPOST डेटा को फिर से नहीं भेजेंगे । यह HTTP कल्पना (3xx अनुभाग की जाँच करें) में लिखा गया है । ऐसा करने वाला कोई भी ग्राहक युक्ति का उल्लंघन कर रहा है।

यदि 301/302 स्थिति कोड GET या HEAD के अलावा किसी अन्य अनुरोध के जवाब में प्राप्त होता है, तो उपयोगकर्ता एजेंट को अनुरोध को स्वचालित रूप से पुनर्निर्देशित नहीं करना चाहिए जब तक कि उपयोगकर्ता द्वारा इसकी पुष्टि नहीं की जा सकती है, क्योंकि यह उन शर्तों को बदल सकता है जिनके तहत अनुरोध जारी किया गया था। ।

मुझे पूरा यकीन है कि ज्यादातर ब्राउज़र इसे पुनर्निर्देशित अनुरोध को अनुरोध के रूप में लागू करके लागू करते GETहैं। सैद्धांतिक रूप से, युक्ति एक ब्राउज़र के लिए अनुमति देता है जो उपयोगकर्ता से पूछेगा कि क्या POSTडेटा को पुनर्निर्देशित करना है, लेकिन मैं वर्तमान में किसी भी तरह से अनजान हूं।


awsome! एक आकर्षण की तरह काम करता है
जिओ कांग

टिप्पणी से थोड़ा भ्रमित। क्या मैं आम तौर पर proxy_set_headerमूल्यों को निर्धारित करना चाहता हूं ? अन्यथा मुझे लगता है कि रिमोट एड्रेस प्रॉक्सी सर्वर का रिमोट एड्रेस बन जाता है, लेकिन जो मैं आमतौर पर चाहता हूं वह क्लाइंट का रिमोट एड्रेस है, सही है?
जॉर्जियोस प्लिगोरोपोलोस

उस उत्तर के लिए धन्यवाद जिसने मुझे बचाया! क्या नगनेक्स सेट करने का कोई तरीका है ताकि यह पोस्ट अनुरोधों को सही ढंग से वापस uwsgi से गुजारें लेकिन http मोड में uwsgi चलाने के बजाय सॉकेट्स के साथ?
ग्रेग जेनिंग्स

@GregJennings एक उत्तर के लिए थोड़ा देर से, लेकिन एक 'प्रॉक्सी_पास' के बजाय 'uwsgi_pass' निर्देश का उपयोग करेगा। बस के मामले में किसी और को देखकर भटक जाता है ...
कामिलियन

1
@ proxy_redirectदो तर्क लेता है। डॉक्स देखें: nginx.org/en/docs/http/…
मैथ्यू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.