একই সার্ভারে একটি ওয়েবসকেট সার্ভার এবং একটি HTTP সার্ভার চালানো


8

আমি পিএইচপি অ্যাপ্লিকেশনটির উদাহরণ পরিবেশন করতে nginx ব্যবহার করছি এবং একই সাথে একটি ওয়েবসকেট সংযোগ শুনতে একটি র্যাচেট অ্যাপ্লিকেশন চালাচ্ছি running সমস্যাটি হচ্ছে, উভয়ই একই পোর্ট (৮০) ব্যবহার করছে।

আমি সার্ভারটি কীভাবে সেট আপ করব যাতে আমি উভয়কেই পরিবেশন করতে পারি?

সম্পাদনা: সবেমাত্র ফিরে এসেছিল দেখেছি প্রশ্নটি বেশ কয়েকবার হ্রাস পেয়েছে, বোধগম্য, আমি সত্যিই একটি পরিষ্কার উপায়ে প্রশ্ন জিজ্ঞাসা করি নি। আমি এর জন্য ক্ষমা চাইছি. যদিও আমি আমার যথাসাধ্য চেষ্টা করেছি। আমি যা বলছিলাম তা স্পষ্ট করার চেষ্টা করব, ওয়েবসকেট প্রোটোকলের কিছু দিক আমি ভুল বুঝেছি, এই ক্ষেত্রে দয়া করে আমাকে সংশোধন করুন:

আমি ভাল করেই জানি যে একটি নির্দিষ্ট বন্দরের শোনার জন্য কেবল একটি প্রক্রিয়াই হতে পারে, আমি আসলে যা বুঝতে পারছি তা পুরো ওয়েবসকেট জিনিসটি, যা আমি বুঝতে পেরেছি, একটি ওয়েবসকেট অনুরোধটি এইচটিটিপি হ্যান্ডশেক দিয়ে শুরু হয়, তার পরে সেখানে প্রক্রিয়া হবে নির্দিষ্ট পোর্টে সেই সেশনটি 'আপগ্রেড' করতে।

আমি যা পড়লাম তা থেকে মনে হয় এই আপগ্রেড প্রক্রিয়াটি ওয়েব সার্ভার দ্বারা পরিচালিত। সুতরাং, আমি কীভাবে এই প্রক্রিয়াটি মোকাবেলা করার জন্য এনগিনেক্স কনফিগার করব?

সব মিলিয়ে ৮০ টি ব্যতীত পোর্টে ওয়েবসকেট সার্ভার চালানোর বিষয়ে আমি যে বিষয়টি উদ্বিগ্ন তা হ'ল পোর্টটি ব্লক হওয়ার সম্ভাবনা। এই উদ্বেগ ভিত্তিহীন? আমার কীভাবে এটি সেট আপ করা উচিত সে সম্পর্কে কোনও পরামর্শ?


that_guy - দয়া করে serverfault.com/help/how-to-ask পর্যালোচনা করুন - পোস্ট করার আগে আপনার যথাযথ পরিশ্রম করতে ভুলবেন না। আমরা লোকেরা প্রশ্ন জিজ্ঞাসা করতে চাইলে আমরা তাদের বাড়ির কাজ করাও পছন্দ করি।
ইটিএল

উত্তর:


16

একটি ভয়ানক লিখিত প্রশ্ন, তবে আমি যে শব্দটির সন্ধান করছিলাম সেটি ছিল বিপরীত প্রক্সি।

মূলত, যেমন এনগিনেক্স কীভাবে ওয়েব অ্যাপ্লিকেশনের বিভিন্ন অ্যাপ্লিকেশনে পাথ বা হোস্টনামের উপর নির্ভর করে বিভিন্ন অনুরোধটি ফরোয়ার্ড করতে পারে, ঠিক তেমন একটি ওয়েবসকেট সার্ভারের উদাহরণটিতে অনুরোধটিকে "ফরওয়ার্ড" করতেও এটি কনফিগার করা যেতে পারে। উদাহরণ:

location /socket {
    proxy_pass http://websocket;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
}

upstream websocket{
    server localhost:8000;
}

map $http_upgrade $connection_upgrade {
    default Upgrade;
    '' close;
}

এইচটিটিপি র http://hostnameঅনুরোধটি সাধারণ এইচটিএমএল পৃষ্ঠায় পরিবেশন করা হবে, যখন ওয়েবসকেট সংযোগটি wss://hostname/socket8000 পোর্টে শোনা একই সার্ভারে ওয়েবসকেট উদাহরণে পাঠানো হবে।


বিশাল সাহায্য !! থানএক্সএক্স
গুনজট সিং

যে অবস্থান ব্লক ভিতরে আরেকটি দরকারী অপশন হবে proxy_read_timeoutএবং proxy_write_timeoutনিষ্ক্রিয়তা উপর disconnects প্রতিরোধ।
vi।

সমস্যাটির সাহায্যের প্রয়োজন ঠিক করে নি !
Nɪsʜᴀɴᴛʜ

2

কোনও সার্ভারের একই পোর্ট / আইপি ঠিকানায় দুটি ভিন্ন সফ্টওয়্যার শোনা যায় না। অন্যথায়, যদি একাধিক অ্যাপ্লিকেশন একই বন্দরে বাঁধাই হতে পারে তবে ট্র্যাফিক কীভাবে অ্যাপ্লিকেশন এক্সওয়াইজেডে স্থানান্তরিত হবে?

আপনি পোর্ট (কম্পিউটার নেটওয়ার্কিং) থেকে পোর্টগুলি সম্পর্কে আরও শিখতে পারেন

আপনাকে যা করতে হবে তা হ'ল নিম্নলিখিত বিকল্পগুলির মধ্যে একটি:

  1. দুটি অ্যাপ্লিকেশনটির একটির জন্য একটি পৃথক বন্দর ব্যবহার করুন এবং এটি আপনার ফায়ারওয়ালের মাধ্যমে অনুমতি দিন।
  2. দুটি পৃথক আইপি ঠিকানা ব্যবহার করুন - এবং প্রতিটি অ্যাপ্লিকেশনকে তাদের নিজ নিজ আইপি ঠিকানার সাথে আবদ্ধ করুন।

আপনার ফায়ারওয়ালটি আপনি যা সেট আপ করেছেন তার অনুসারে কেবল কনফিগার করা দরকার।


আপনি আরো তথ্য প্রদান করতে পারেন? যে ফায়ারওয়াল সঙ্গে সমস্যা হতে পারে? ওয়েবসকেটের সুবিধা হ'ল এটি এড়ানো কি নয়?
hndr

6
ভাগ করে নেওয়া পোর্টটি সম্ভব কারণ আপনি এইচটিটিপি সার্ভার এবং ওয়েবসকেট সার্ভার উভয়ই এক প্রক্রিয়াতে রাখতে পারেন।
পেসারিয়ার 21

0

আপনার দুটি বিকল্প রয়েছে:

  1. একটি আলাদা বন্দরে বাঁধুন (উদাঃ 8000)
  2. (যদি সম্ভব হয়) সার্ভারে একটি অতিরিক্ত আইপি ঠিকানা যুক্ত করুন এবং বিভিন্ন আইপি'র ওয়েবসভার এবং ওয়েবসকেট সার্ভারকে আবদ্ধ করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.