আমার দুটি সাইটগুলির জন্য আমার HAProxy রয়েছে, এর মধ্যে একটি পাবলিক এবং একটি ব্যক্তিগত।
www.mysite.com private.mysite.com
এটিএম, আমি হ্যাপ্রোক্সিটি এর মতো ব্যবহার করছি:
frontend mysite_https
bind *.443 ssl crt /etc/mycert.pem ca-file /etc/myca.pem verify optional no-sslv3
mode http
acl domain_www hdr_beg(host) -i www.
acl domain_private hdr_beg(host) -i private.
acl path_ghost path_beg /ghost/
acl clientcert ssl_c_used
redirect location https://www.example.com if path_ghost !clientcert
redirect location https://www.example.com if !domain_www !clientcert
use_backend bknd_private if domain_private
use_backend bknd_www if domain_www
default_backend bknd_www
এটি কী করা উচিত তা ক্লায়েন্টের শংসাপত্রের জন্য জিজ্ঞাসা করা (allyচ্ছিকভাবে) এবং এগিয়ে যান। যদি ডোমেনটি www.example.com না থাকে এবং দর্শনার্থী সঠিক শংসাপত্র সরবরাহ করতে না পারে বা পথটি / ভূত / এবং দর্শনার্থী সঠিক শংসাপত্র সরবরাহ করতে না পারে, তবে এটি https://www.example.com এ পুনঃনির্দেশ করা উচিত
এখনও পর্যন্ত, এটি সূক্ষ্ম কাজ করে। তবে ম্যাক ব্যবহারকারীরা আমার সাইটটি সাফারির সাথে ব্রাউজ করে অভিযোগ পেয়েছিলেন যে https://www.example.com/ এ ব্রাউজ করার সময় তারা শংসাপত্রের জন্য জিজ্ঞাসা করতে থাকে যেখানে উদাহরণস্বরূপ ফায়ারফক্স https: //private.example ব্রাউজ করার সময় কেবল জিজ্ঞাসা করে .com / অথবা https://www.example.com/ghost/ ।
সাফারি ঠিক কীভাবে কাজ করে তাই আমি এটি ঠিক করতে পারি না। আমার ধারণাটি ছিল বিভিন্ন প্রান্তের মধ্যে বিভাজন করতে এসএনআই ব্যবহার করা
frontend mysite_https
bind *.443 ssl crt /etc/mycert.pem no-sslv3
frontend private_https
bind *.443 ssl crt /etc/mycert.pem ca-file /etc/myca.pem verify optional no-sslv3
অবশ্যই এটি কাজ করে না কারণ
ক। 443 পোর্টে আমি কেবল একটি পাবলিক আইপি খ দিয়ে দুটি অগ্রভাগ শুনতে পাচ্ছি না। আমি "ডোমেইন_উইউউজউই যদি ইউজার_ফ্রন্টএন্ড" বা এর মতো কিছু বলার উপায় খুঁজে পাইনি। (কেবল ব্যবহার_পরিবর্তন বা ব্যবহার-সার্ভার)
আমি তিনটি হ্যাপ্রোক্সি সার্ভার দিয়ে এটি করার চেষ্টাও করেছি
frontend haproxy-sni
bind *:443 ssl crt /etc/mycert.pem no-sslv3
mode tcp
tcp-request inspect-delay 5s
tcp-request content accept if { req.ssl_hello_type 1 }
acl domain_www ssl_fc_sni_end -i www.example.com
use-server server1 haproxy-private.lan if !domain_www
use-server server2 haproxy-public.lan if domain_www
এটি কাজ করে, এখানে সমস্যাটি হ্যাপ্রোক্সি-প্রাইভেট ক্লায়েন্টের শংসাপত্রের জন্য জিজ্ঞাসা করে, তবে অনুরোধটি ব্রাউজারে পৌঁছায় না। কোনওভাবে হ্যাপ্রোক্সি-স্নি অনুরোধটি ড্রপ করে।
এছাড়াও, আমার কাছে এখন তিনটি হাইপোক্সি সার্ভার রয়েছে যা কাঙ্ক্ষিত নয় (যদিও এর চেয়ে ভাল সমাধান আমি খুঁজে না পেলাম তবে সম্ভাব্য বিকল্প)।
সাধারণত আমি এই জাতীয় কিছু চাই (তৈরি করা .. আসল বিকল্পগুলি জানেন না)
frontend mysite_https
bind *.443 ssl crt /etc/mycert.pem no-sslv3
mode http
acl domain_www hdr_beg(host) -i www.
acl domain_private hdr_beg(host) -i private.
acl path_ghost path_beg /ghost/
ssl_options ca-file /etc/myca.pem verify optional if !www_domain # made up!
ssl_options ca-file /etc/myca.pem verify optional if !path_ghost # made up!
acl clientcert ssl_c_used
redirect location https://www.example.com if path_ghost !clientcert
redirect location https://www.example.com if !domain_www !clientcert
...
আমি আশা করি কেউ আমাকে এই সাহায্য করতে পারে ...