কীভাবে এনজিআইএনএক্সকে বিভিন্ন পোর্ট নম্বরের বিপরীত প্রক্সি হিসাবে কনফিগার করতে হয়?


15
I have NGINX configured like this as a reverse proxy for http requests:

server {
    listen 80;
    server_name 203.0.113.2;

    proxy_set_header X-Real-IP  $remote_addr; # pass on real client IP

    location / {
        proxy_pass http://203.0.113.1:3000;
    }
}

আমি প্রক্সি ssh (পোর্ট 22) অনুরোধ করতে চাই। আমি কি একই কনফিগারেশন ফাইলে এর মতো অন্য একটি সার্ভার ব্লক যুক্ত করতে পারি:

server {
    listen 22;
    server_name 203.0.113.2;

    proxy_set_header X-Real-IP  $remote_addr; # pass on real client IP

    location / {
        proxy_pass http://203.0.113.1:22;
    }
}

শেষ ফলাফলটি হ'ল:

server {
    listen 80;
    server_name 203.0.113.2;

    proxy_set_header X-Real-IP  $remote_addr; # pass on real client IP

    location / {
        proxy_pass http://203.0.113.1:3000;
    }
}
server {
    listen 22;
    server_name 203.0.113.2;

    proxy_set_header X-Real-IP  $remote_addr; # pass on real client IP

    location / {
        proxy_pass http://203.0.113.1:22;
    }
}

টিআইএ,
ওলে


2
nginxhttpপ্রক্সি হিসাবে অভিনয় করছে । যদি আপনি এটিকে বিপরীত প্রক্সি পোর্ট 22 এ সেট করেন তবে এটি আপনাকে এসএসএইচ ট্র্যাফিকের অনুমতি দেবে না - কেবল httpএসএসএইচ সার্ভারে ট্র্যাফিক, এটি স্পষ্টতই ব্যর্থ হবে।
গ্যারেথTheRed

যান খুঁজে বার করো HAProxy

উত্তর:


13

SSH প্রোটোকল HTTP- র উপর ভিত্তি করে করা হয় না, এবং, যেমন, নিয়মিত মাধ্যমে প্রক্সী করা যাবে না proxy_passএরngx_http_proxy_module

যাইহোক, সম্প্রতি দিয়ে শুরু nginx 1.9.0 (1.10.0 2016-04-26 সঙ্গে স্থিতিশীল নামে প্রকাশিত) nginx করছেন জন্য লাভ সমর্থন করেনি বিভিন্ন TCP প্রবাহ প্রক্সী করার, যার মানে আপনি nginx একটি সাম্প্রতিক যথেষ্ট সংস্করণ আছে যদি, আপনি, প্রকৃতপক্ষে, এর সাথে প্রক্সি এসএসএস সংযোগগুলি করতে পারেন (তবে নোট করুন যে আপনি X-Real-IPপ্রক্সিড সংযোগে এর মতো কিছু যুক্ত করতে সক্ষম হবেন না , কারণ এটি HTTP এর উপর ভিত্তি করে নয়)।

আরও তথ্য এবং উদাহরণের জন্য, একবার দেখুন:


8

এনজিএনএক্স সংস্করণ ১.৯.০, এনজিআইএনএক্স এনজিএক্স_স্ট্রিম_কোরি_মডিউল মডিউল সমর্থন করে, এটি - -র-স্ট্রিমের সাহায্যে সক্ষম করা উচিত। যখন স্ট্রিম মডিউল সক্ষম হয় তখন তারা প্রোটোকল টিসিপি প্রক্সি প্রেরণ করা সম্ভব

stream {
    upstream ssh {
        server 192.168.1.12:22;
    }
        server {
        listen        12345;
        proxy_pass    ssh;

    }

}

https://www.nginx.com/resources/admin-guide/tcp-load-balancing/


এগুলিই এনজিনেক্সের দুর্দান্ত বৈশিষ্ট্য - তবে আপনি যখন এনজিএনএক্সের মতো বাস্তব বিপরীত প্রক্সি পেতে চান তখন আইএমএইচও এটি অকেজো, এইচটিটিপি-র জন্য নিখুঁত কাজ করে। জিনিসটি হ'ল স্ট্রিমগুলির পদ্ধতির সহজ NAT - তাই আমি বরং এজেন্ট রাউটারে সেই কাজটি করব। আমি এখানে যা দেখতে চাই / চাই তা হ'ল HTTP বিপরীত প্রক্সি হিসাবে ঠিক একই বৈশিষ্ট্য সেট। অন্য কথায়, আমার কাছে কেবল একটি পাবলিক আইপি ঠিকানা রয়েছে - এইভাবে পোর্ট 22 কেবলমাত্র একটি মেশিনের জন্যই ব্যবহারযোগ্য - তবে যদি কোনও ফর্মের মধ্যে অনুরোধগুলি আলাদা করার উপায় ছিল ssh me@srv1.my.netএবং ssh me@srv2.my.net- এটি দুর্দান্ত হবে। এটি প্রোটোকল সীমাবদ্ধতা (এসএসএইচ ডিএনএস নাম ক্লায়েন্টের ব্যবহারগুলি দেয় না)
স্ট্যামস্টার

@ স্ট্যামস্টার, আপনি ইতিমধ্যে প্রায় একই জিনিস করতে পারেন, হয় আলাদা আলাদা পোর্ট নম্বর ব্যবহার করে (যেমন, 122 এর জন্য srv1এবং 222 এর জন্য srv2), বা নেস্টেড ssh সেশন ব্যবহার করে, যেখানে আপনি সর্বজনীন সার্ভার / আইপিতে প্রথমে ssh করেছেন এবং সেখান থেকে, পাতায় ssh; যেমন ssh user@example.org 'ssh user@192.168.5.1',।
সিএনএসটি

1
না, প্রয়োজনীয়তা / ধারণাটি হ'ল ডিফল্ট পোর্ট (22 ​​বা অন্য কোনও পরিষেবা ..) গন্তব্য বন্দর হিসাবে ব্যবহার করা, এবং তারপরে ডিএনএস নাম বা তার উপর নির্ভর করে ট্র্যাফিক রুট করা। ঠিক যেমন আমরা সবাই এনগিনেক্সকে বিপরীত ওয়েব HTTP প্রক্সি সার্ভার হিসাবে ব্যবহার করছি, তেমনি প্রতিটি ডোমেন ডিফল্ট পোর্টগুলি 80, 443 টার্গেট করে এবং তারপরে এনজিঙ্ক্স ট্রাফিককে প্রক্সি নিয়মের উপর নির্ভর করে লক্ষ্য করে। অবশ্যই ক্লায়েন্টের HOSTশিরোনাম রয়েছে তাই এটি কোন সাইটকে টার্গেট করে তা পৃথক করা সহজ ... নেস্টেড এসএসএইচ সেশনগুলি সমাধানের ধরণ তবে একটি অগোছালো - এটি কার্যকর works আমি আমাদের প্রান্তের নেটওয়ার্কে বিভিন্ন বন্দর দিয়ে শেষ করেছি - সবচেয়ে KISS এবং নির্ভরযোগ্য সমাধান হিসাবে ভাল পুরাতন NAT।
স্ট্যামস্টার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.