পুনরায় লেখার মাধ্যমে HTTP পোষ্ট অনুরোধগুলি ফরওয়ার্ড করার জন্য আমি কীভাবে এনজিএনেক্স পাব?


19

আমার আইওএস অ্যাপটি বর্তমানে পোষ্ট পোস্টের মাধ্যমে এ ডোমেন অ্যাক্সেস করছে তবে আমি সমস্ত অনুরোধ বি ডোমেনে ফরোয়ার্ড করতে চাই would

আমি যদি সাধারণ rewrite ^/(.*)$ http://mydomain/$1 permanent;পোস্ট ব্যবহার করি তবে মনে হয় ডেটাটি নষ্ট হয়ে যাবে।

এনজিএনএক্স ব্যবহার করে আমি কীভাবে এইচটিটিপি পোস্টের ডেটা কোনও অন্য ডোমেনে পাস করতে পারি?

উত্তর:


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 ডেটা পুনরায় পাঠায় না । এটি এইচটিটিপি স্পেকে লেখা হয়েছে (3xx বিভাগটি পরীক্ষা করুন)। যে কোনও ক্লায়েন্ট এটি করেন তা অনুমান লঙ্ঘন করে।

জিইটি বা হেড ব্যতীত অন্য কোনও অনুরোধের প্রতিক্রিয়া হিসাবে যদি 301/302 স্থিতি কোডটি পাওয়া যায়, তবে ব্যবহারকারী এজেন্টটি অনুরোধটি জারি করা শর্তে পরিবর্তিত হতে পারে, কারণ এটি ব্যবহারকারী কর্তৃক নিশ্চিত হওয়া যায় না হলে অনুরোধটি স্বয়ংক্রিয়ভাবে পুনঃনির্দেশ করা উচিত নয় ।

আমি মোটামুটি নিশ্চিত যে বেশিরভাগ ব্রাউজারগুলি পুনঃনির্দেশিত অনুরোধটিকে অনুরোধ হিসাবে বাধ্য করে কেবল এটি প্রয়োগ করে GET। তাত্ত্বিকভাবে, অনুমানটি এমন একটি ব্রাউজারের জন্য অনুমতি দেয় যা ব্যবহারকারীকে POSTডেটা পুনর্নির্দেশ করতে হবে কিনা তা জিজ্ঞাসা করবে , তবে আমি বর্তমানে যা করছি তা সম্পর্কে অসচেতন।


অসাধারণ সব!
যাদুর

মন্তব্য থেকে একটু বিভ্রান্ত। আমি কি সাধারণত proxy_set_headerমানগুলি সেট করতে চাই ? অন্যথায় আমি অনুমান করি যে দূরবর্তী ঠিকানা প্রক্সি সার্ভারের দূরবর্তী ঠিকানা হয়ে যায় তবে আমি সাধারণত ক্লায়েন্টের দূরবর্তী ঠিকানাটি কী চাই, সঠিক?
জর্জিওস প্লিগোরোপোলোস

উত্তরের জন্য ধন্যবাদ যে আমাকে বাঁচিয়েছে! এনগিনেক্স সেট করার কোনও উপায় আছে যাতে এটি পোস্ট অনুরোধগুলি সঠিকভাবে উউসগিতে ফিরে যায় তবে HT মোডে উউসগি চালানোর পরিবর্তে সকেট সহ?
গ্রেগ জেনিংস

@ গ্রেগ জেনিংস উত্তরের জন্য কিছুটা দেরি করলেও কেউ 'প্রক্সি_পাস' এর পরিবর্তে 'উউসগি_পাস' নির্দেশিকা ব্যবহার করবেন।
সেক্ষেত্রে

1
@ উইল proxy_redirectদুটি যুক্তি লাগে। দস্তাবেজগুলি দেখুন: nginx.org/en/docs/http/…
ম্যাথু শার্লে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.