হ্যাপ্রোক্সি + টানেল + বেঁচে থাকবে?


10

এইচটিটিপিএস ট্র্যাফিক পরিচালনা করতে আমি হ্যাপ্রোক্সি ১.৪ এর সামনে টানেল লাগাতে চাই। এক্স-ফরওয়ার্ড-ফর শিরোনাম যুক্ত করার জন্য আমারও স্টানেল লাগবে । এটি হ্যাপ্রোক্সি ওয়েবসাইট থেকে "স্টানেল-৪.১.৫ এক্সএক্সফোর্ডেড-ফর.ডিফ" প্যাচগুলি দ্বারা অর্জন করা যেতে পারে ।

তবে বর্ণনায় উল্লেখ রয়েছে:

মনে রাখবেন যে এই প্যাচটি জীবিত রাখার সাথে কাজ করে না ...

আমার প্রশ্ন: আমার পক্ষে এটি অনুশীলনের অর্থ কী? আমি নিশ্চিত না,

  1. যদি এটি মাঝখানে রাখার বিষয়ে হয়
    • ক্লায়েন্ট এবং টানেল
    • সুড়ঙ্গ এবং haproxy
    • বা হ্যাপ্রোক্সি এবং ব্যাকএন্ড সার্ভার?
  2. পারফরম্যান্সের জন্য এর অর্থ কী: যদি ওয়েব পৃষ্ঠায় আমার কাছে 100 আইকন থাকে তবে ব্রাউজারটি 100 টি পূর্ণ এসএসএল সংযোগের জন্য আলোচনা করতে পারে, বা এটি নতুন টিসিপি সংযোগ তৈরি করে এসএসএল সংযোগটি পুনরায় ব্যবহার করতে পারে?

উত্তর:


12

এটি এইচটিটিপি রাখার বিষয়ে, যা একক টিসিপি সেশনের মাধ্যমে (এবং, এসএসএল, একটি একক এসএসএল সেশন) মাধ্যমে একাধিক সংস্থান অনুরোধের অনুমতি দেয়। এটি কোনও এসএসএল সাইটের পারফরম্যান্সের পক্ষে অত্যন্ত গুরুত্বপূর্ণ, যেমনটি জীবিত রাখে না, প্রতিটি অনুরোধ করা সংস্থার জন্য একটি এসএসএল হ্যান্ডশেক প্রয়োজন।

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


একটি রাখার অধিবেশন একের পর এক আরও অনুরোধ - একবার সার্ভারের একটি অনুরোধের প্রতিক্রিয়া শেষ হয়ে গেলে, সার্ভার FINটিসিপি অধিবেশন শেষ করতে কোনও প্যাকেট প্রেরণ করে না ; ক্লায়েন্ট সহজেই হেডারগুলির একটি ব্যাচ পাঠাতে পারে।

সেই প্যাচটি কী করছে তা বোঝার জন্য, এখানে রাখুন-জীবিত কথোপকথনের একটি উদাহরণ:

ক্লায়েন্ট:

GET / HTTP/1.1
Connection: keep-alive
Host: domain.com
...

সার্ভার:

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Server: Apache
Content-Length: 34
.... (other headers)
<html><head>content!</head></html>

এখানেই যেখানে অ-সংরক্ষণে-জীবিত সংযোগ বন্ধ হবে। তবে, বেঁচে থাকতে ক্লায়েন্টকে কেবল অন্য একজনকে গুলি চালানোর অনুমতি দেয়:

GET /images/some/image.on.the.page.jpg HTTP/1.1
Connection: keep-alive
Host: domain.com
...

প্রক্সিংয়ে ক্লায়েন্ট আইডির জন্য, কয়েকটি X-Forwarded-Forক্লায়েন্টের অনুরোধে কিছু বিপরীত প্রক্সি হেডারে যুক্ত করতে পারে । লগিং এবং অন্যান্য অ্যাপ্লিকেশন প্রয়োজনীয়তার ক্ষেত্রে সতর্কতার জন্য অনুরোধটি আপস্ট্রিম সার্ভারকে জানিয়েছে যেখানে (বিপরীত প্রক্সি আইপি থেকে শুরু করা প্রতিটি অনুরোধের পরিবর্তে) অনুরোধটি এসেছে।

X-Forwarded-Forহেডার প্রতিটি এবং সক্রিয়-রাখুন সংযোগ মাধ্যমে পাঠানো হিসাবে পূর্ণ হেডার প্রতিটি সময় পাঠানো হয় যে ক্লায়েন্ট সংস্থান অনুরোধ মধ্যে ইনজেকশনের করা প্রয়োজন; X-Forwarded-Forহেডার হ্যান্ডলিং এবং এর মধ্যে অনুবাদ "সত্য" অনুরোধ আইপি প্রতি-অনুরোধে সম্পন্ন হয়, প্রতি-টিসিপি-রাখুন না-জীবিত-সেশন, ভিত্তিতে। আরে, সম্ভবত সেখানে দুর্দান্ত কিছু বিপরীত প্রক্সি সফ্টওয়্যার রয়েছে যা একাধিক ক্লায়েন্টের পরিষেবার অনুরোধগুলির জন্য একক রাখে-জীবিত সেশন ব্যবহার করে।

এই প্যাচটি এখানে ব্যর্থ হয়।


সেই সাইটের প্যাচটি প্রবাহে এইচটিটিপি শিরোনামের প্রথম সেটটির শেষের জন্য টিসিপি সেশনটির বাফারটি পর্যবেক্ষণ করে এবং নতুন শিরোলেখটিকে that প্রথম সেটটির শিরোনাম শেষ হওয়ার পরে প্রবাহে ইনজেক্ট করে। এটি হয়ে যাওয়ার পরে, এটি X-Forwarded-Forকাজটি বিবেচনা করে এবং নতুন সেট শিরোনামের সমাপ্তির জন্য স্ক্যান করা বন্ধ করে দেয়। এই পদ্ধতির পরবর্তী অনুরোধগুলির মাধ্যমে আগত সমস্ত ভবিষ্যতের শিরোনাম সম্পর্কে কোনও সচেতনতা নেই।

সত্যিই তাদের দোষ দিতে পারে না; এর স্ট্রিমের বিষয়বস্তু পরিচালনা ও অনুবাদ করতে স্টানেলটি আসলে নির্মিত হয়নি।

এটি আপনার সিস্টেমে যে প্রভাব ফেলবে তা হ'ল চালিয়ে যাওয়ার প্রবাহের প্রথম অনুরোধটি X-Forwarded-Forশিরোনামটি সঠিকভাবে ইনজেকশন দেবে এবং পরবর্তী সমস্ত অনুরোধগুলি ঠিক কাজ করবে - তবে তাদের শিরোনামটি থাকবে না won't

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


1
দুর্দান্ত উত্তর, ধন্যবাদ। আমাকে মনে করিয়ে দেয়, কেন এখানে প্রশ্ন জিজ্ঞাসা করা ভাল ধারণা।
ক্রিস Lerher

1
স্ট্যান্ডেল-এ বেঁচে থাকা হেডার ইনজেকশন রাখার অনুমতি দেওয়ার জন্য, এটি প্রায় সমস্ত এইচটিটিপিতে কথা বলতে সক্ষম হবে যা বিশাল পরিমাণে কাজ হবে be তাই বলা হয়, আপনার কাছে HAProxy এর প্রক্সি প্রটোকল (যা stunnel অথবা বিকল্পভাবে জন্য একটি প্যাচ প্রয়োজন ব্যবহার করতে পারেন অশ্বপালনের প্রতিষ্ঠান ) একজন HAProxy হেডার উদ্বুদ্ধ। আরও তথ্যের জন্য দস্তাবেজগুলি দেখুন (গুগল ক্যাশে থেকে, যেহেতু এইচআরসি সাইটটি এটিএম থেকে আংশিকভাবে নিচে রয়েছে)
হোলগার ঠিক

5

স্ট্যানেল ৪.৪৫ এইচএপি প্রক্সি ১.১৫ এর সাথে আগত কিছু নতুন দক্ষতা (প্রক্সি প্রোটোকল) ব্যবহার করে এটি সঠিকভাবে ঠিক করেছে

এটি পূর্ববর্তী প্যাচগুলির সাথে সমস্যাগুলিও ঠিক করে দেয় এবং জীবিত রাখুন


3

আমি অন্য থ্রেডে যা পোস্ট করেছি তার অনুরূপ, HAProxy 1.5-dev12 থেকে উভয় পক্ষের নেটিভ এসএসএলকে সমর্থন করে। এক্স-ফরওয়ার্ড-ফর থাকার কারণে, এইচটিটিপি জীবিত রাখার পাশাপাশি সার্ভারকে এই শিরোনাম সরবরাহ করে যে সংযোগটি এসএসএল-এর মাধ্যমে তৈরি করা হয়েছে নিচের মতোই সহজ:

listen front
    bind :80
    bind :443 ssl crt /etc/haproxy/haproxy.pem
    mode http
    option http-server-close
    option forwardfor
    reqadd X-Forwarded-Proto:\ https if { is_ssl }
    server srv1 1.1.1.1:80 check ...
    ...

এটি স্ট্যাঁচাল প্যাচিংয়ের চেয়ে অনেক বেশি সহজ এবং চালিয়ে রাখা-চালিয়ে যাওয়ার চেয়ে অনেক ভাল।


আপনি is_ssl এর পরিবর্তে ssl_fc ব্যবহার করতে চান
জোস

2

শেনের দুর্দান্ত উত্তর প্রসারিত করে, আপনি এইচএপ্রক্সির সামনে এনগিনেক্সকে এসএসএল টার্মিনেটর হিসাবে ব্যবহার করতে পারেন। এটি ক্লায়েন্ট এবং এনজিনেক্সের মধ্যে সঠিকভাবে বেঁচে থাকা পরিচালনা করে যা সবচেয়ে ক্ষণস্থায়ী সংবেদনশীল দিক এবং প্রতিটি ক্লায়েন্টের অনুরোধের জন্য ব্যাকএন্ডে একটি নতুন সংযোগ তৈরি করে, প্রত্যেকটিতে এক্স-ফরওয়ার্ড-ফর প্রেরণ করে।


1
তবে আপনার যদি ওয়েবসকেটগুলির প্রয়োজন হয় তবে এনজিনেক্স কাজ করবে না।
w00t

এছাড়াও, এটি এসএসএল সেশন ক্যাশে সমর্থন করে।
3molo
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.