যখন আপনি উইন্ডোজে ইন্টারনেট ইনফরমেশন সার্ভিসেস (IIS) ইনস্টল করেন, ডিফল্টভাবে একটি খালি "Default Web Site" তৈরি হয় এবং স্ট্যান্ডার্ড ওয়েব HTTP পোর্ট – TCP 80-এ লিসেন করে। IIS পরিভাষায়, এর মানে এই সাইটটি TCP/80 পোর্টের সাথে বাইন্ড করা আছে। এই সাইটটি খোলার জন্য, ব্রাউজারে IIS সার্ভারের নাম (“https://web-srv1”) বা এর IP ঠিকানা (“https://192.168.1.100”) লিখুন। একটি একক IIS ওয়েব সার্ভার দশক বা শতকরা শেয়ার্ড হোস্ট করতে পারে, এবং আপনি একাধিক ওয়েবসাইট চালাতে পারেন, একই TCP পোর্ট (80, 443, বা যেকোনো) এ লিসেন এবং রেসপন্স দিয়ে। তবে, IIS ম্যানেজারের ইন্টারফেস থেকে এটি স্পষ্ট হয় না যে আপনি অন্য একটি ওয়েবসাইট হোস্ট করতে পারেন অন্য কোনো পোর্টে (যেমন 8080) বাইন্ড না করে। এই আর্টিকেলে আমরা দেখব কীভাবে একই IIS সার্ভারে একাধিক ওয়েবসাইট হোস্ট করতে হয় এবং সেগুলো একই পোর্ট ও IP ঠিকানা, বা ভিন্ন IP ঠিকানাতে বাইন্ড করতে হয়।
IIS ওয়েব সাইট বাইন্ডিং
একক ওয়েব IIS সার্ভার উইন্ডোজ সার্ভারে একাধিক ওয়েবসাইট হোস্ট করতে পারে। তবে, IIS HTTP রিকোয়েস্টগুলো সঠিকভাবে ডিস্ট্রিবিউট করতে পারার জন্য, প্রতিটি ওয়েবসাইটকে কিছু ইউনিক মান দিয়ে চিহ্নিত করতে হবে। IIS ওয়েবসাইটের ক্ষেত্রে, এটি তিনটি অ্যাট্রিবিউটের একটি ইউনিক কম্বিনেশন যা প্রতিটি ওয়েবসাইটকে আলাদা করে। এগুলো হলো:
- একটি TCP পোর্ট নম্বর
- একটি IP ঠিকানা
- একটি হোস্ট হেডার (হোস্ট নাম)
হোস্ট করা ওয়েবসাইটের তথ্য IIS মেটাবেজের ServerBindings অ্যাট্রিবিউটে নিচের ফরম্যাটে সংরক্ষিত থাকে: IP:Port:Hostname। সুতরাং, যদি আপনি একাধিক ওয়েবসাইট একই পোর্ট ও IP ঠিকানাতে হোস্ট করতে চান, তবে আপনাকে একটি ইউনিক Host header ব্যবহার করতে হবে। হোস্ট হেডার কী? হোস্ট হেডার হলো একটি HTTP রিকোয়েস্টের অংশ যা ক্লায়েন্ট সার্ভারে পাঠায় যেটি নির্দেশ করে রিকোয়েস্টটি কোন ওয়েবসাইটের জন্য। অনুরূপভাবে, এই হোস্ট হেডার ওয়েব সার্ভার সাইডে নির্দিষ্ট থাকতে হবে, এবং DNS-এ হোস্টনেম এবং IIS ওয়েব সার্ভারের IP ঠিকানার সাথে মিলে যাওয়া সঠিক রেকর্ড থাকতে হবে।
মান লিন যে, আপনার একটি ওয়েবসাইট IIS-এ চলছে এবং ৮০ পোর্টে লিসেন করছে। এবং আপনাকে দ্বিতীয় ওয়েবসাইটকে একই পোর্টে বাইন্ড করতে হবে।
IIS ম্যানেজারে, অন্য একটি ওয়েবসাইট (Add Website) TestSite নামে তৈরি করুন, যার ফাইলগুলো c:\inetpub\TestSite-এ থাকবে (হোস্টনেম এখনো নির্দিষ্ট করবেন না)।
OK ক্লিক করার পর একটি সতর্কতা আসবে যে আপনি *:80 বাইন্ডিং দুটি সাইটের জন্য ব্যবহার করতে পারবেন না।
Add Website The binding '*:80:' is assigned to another site. If you assign the same binding to this site, you will only be able to start one of the sites. Are you sure that you want to add this duplicate binding?
এই সতর্কতাকে এক্সেপ্ট করুন। তাহলে আপনার পাওয়া গেলো পোর্ট ৮০-এ বাইন্ড করা অন্য একটি সাইট, কিন্তু আপনি প্রথম সাইট বন্ধ না করলে সেটি স্টার্ট করতে পারবেন না।
হোস্ট হেডার ব্যবহার করে IIS-এ একাধিক ওয়েবসাইট হোস্ট করা
একটি ইউনিক বাইন্ডিং তৈরি করতে, দ্বিতীয় IIS ওয়েবসাইটের জন্য অন্য একটি নাম (Host Name) নির্দিষ্ট করুন। TestSite-এর ওপর রাইট-ক্লিক করুন এবং Edit Bindings সিলেক্ট করুন। আপনার প্রয়োজনীয় বাইন্ডিং সিলেক্ট করুন এবং Edit ক্লিক করুন।
Host Name ফিল্ডে ইউনিক হোস্ট নাম নির্দিষ্ট করুন যা ব্যবহারকারীরা ব্যবহার করবে, যেমন TestSite।
আপনি কমান্ড প্রম্পট দিয়ে IIS সাইট বাইন্ডিং কনফিগার করতে পারেন। এই কেসে, IIS ৭ বা নতুনতর ভার্সনের জন্য বাইন্ডিং কনফিগার করার কমান্ড:
C:\Windows\System32\inetsrv\appcmd.exe set site /site.name:testsite /+bindings.[protocol='http',bindingInformation='*:80:testsite']
এখন আপনি দ্বিতীয় ওয়েবসাইটটিও স্টার্ট করতে পারবেন।
শুধু আপনার IIS ওয়েব সার্ভারের IP ঠিকানা বা হোস্টনেম নির্দেশ করে একটি DNS অ্যালিয়াস (A বা CNAME) যোগ করতে হবে। আপনি যদি অ্যাক্টিভ ডিরেক্টরি ডোমেন ব্যবহার করেন, তবে ডোমেন কন্ট্রোলারে DNS রেকর্ড তৈরি করতে হবে।
আপনি DNS কনসোলে (dnsmgmt.msc) testsite নামে একটি CNAME রেকর্ড তৈরি করতে পারেন এবং আপনার IIS সার্ভারের ডোমেন নাম FQDN টার্গেট হোস্ট হিসেবে নির্দিষ্ট করতে পারেন।
এই DNS রেকর্ডটি পাওয়ারশেল দিয়েও তৈরি করা যায়:
Add-DnsServerResourceRecordCName -HostNameAlias web-srv1.woshub.com -Name testsite -ZoneName woshub.com
ব্রাউজারে https://TestSite খুলুন। এটা সফলভাবে খুলতে হবে।
এখানে কিছু দরকারী নোট রয়েছে যেগুলো উল্লেখ করা উচিত।
যদি আপনি একটি スタンドঅ্যালোন IIS সার্ভার ব্যবহার করেন, তবে সাইট নাম থেকে সার্ভারের IP ঠিকানা ম্যাপিং ফাইল C:\Windows\system32\drivers\etc\hosts দিয়ে করা হয়।
বাইন্ড সেটিংস IIS কনফিগারেশন ফাইলের C:\Windows\System32\inetsrv\config\applicationHost.config।
আমাদের কেসে, এই সেকশনে নিচের ডেটা রয়েছে:
<sites> <site name="Default Web Site" id="1"> <application path="/"> <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" /> </application> <bindings> <binding protocol="http" bindingInformation="*:80:" /> </bindings> </site> <site name="TestSite" id="2" serverAutoStart="true"> <application path="/" applicationPool="TestSite"> <virtualDirectory path="/" physicalPath="C:\inetpub\TestSite" /> </application> <bindings> <binding protocol="http" bindingInformation="*:80:TestSite" /> </bindings> </site> <siteDefaults> <logFile logFormat="W3C" directory="%SystemDrive%\inetpub\logs\LogFiles" /> <traceFailedRequestsLogging directory="%SystemDrive%\inetpub\logs\FailedReqLogFiles" /> </siteDefaults> <applicationDefaults applicationPool="DefaultAppPool" /> <virtualDirectoryDefaults allowSubDirConfig="true" /> </sites>
এভাবেই, আপনি আপনার IIS ওয়েব সার্ভারের একই পোর্টে সেকড়েকরা সাইট হোস্ট এবং রান করতে পারেন।
IIS-এ ভিন্ন IP ঠিকানায় একাধিক সাইট চালানো
এখন চলে দেখি, IIS ওয়েব সার্ভারে দুটি সাইট ভিন্ন IP ঠিকানায় কীভাবে চালানো যায়। প্রথমে, উইন্ডোজ সার্ভারে একটি আলাদা VLAN ইন্টারফেস যোগ করতে হবে বা আপনার NIC-এ একটি অডিশনাল IP ঠিকানা (অ্যালিয়াস) অ্যাসাইন করতে হবে।
এই উদাহরণে, সার্ভারের মূল IP ঠিকানা 192.168.13.100, এবং আমি একই নেটওয়ার্ক অ্যাডাপ্টারে একটি অডিশনাল IP অ্যালিয়াস 192.168.13.101 যোগ করব:
Get-NetIPAddress | ft IPAddress, InterfaceAlias, SkipAsSource
New-NetIPAddress –IPAddress 192.168.13.101 –PrefixLength 24 –InterfaceAlias “Ethernet” –SkipAsSource $True
এখন নতুন সাইটের জন্য DNS সার্ভারে একটি A রেকর্ড তৈরি করতে হবে (আমরা রিভার্স জোনে PTR রেকর্ডও তৈরি করব –CreatePtr অপশন দিয়ে):
Add-DnsServerResourceRecordA -Name NewSite3 -IPv4Address 192.168.13.101 -ZoneName woshub.com -TimeToLive 01:00:00 –CreatePtr
বাকি আছে সাইট বাইন্ডিং সেটিংস খুলুন এবং সাইটকে আপনার হোস্টের অডিশনাল IP ঠিকানার সাথে বাইন্ড করুন।
পাওয়ারশেল ব্যবহার করে IIS সাইট বাইন্ডিং ম্যানেজ করা
আপনি IIS সার্ভারে সাইটের বাইন্ডিং পাওয়ারশেল দিয়ে ম্যানেজ করতে পারেন। এর জন্য WebAdministration মডিউল ব্যবহার করা হয়:
Import-Module WebAdministration
সকল উপলব্ধ IIS সাইট এবং তাদের বাইন্ডিং সম্পর্কিত তথ্য দেখান:
Get-IISSite
অথবা একক সাইট সম্পর্কে:
(Get-Website -Name NewSite).bindings.Collection
protocol bindingInformation sslFlags -------- ------------------ -------- http 192.168.13.101:80:NewSite3 0
এই সাইটের বাইন্ডিং পরিবর্তন করতে (আপনি IP ঠিকানা, পোর্ট বা নাম পরিবর্তন করতে পারেন):
Set-WebBinding -Name NewSite1 -BindingInformation "192.168.13.101:80:NewSite1" -PropertyName 'Port' -Value '8080'
Set-WebBinding -Name NewSite1 -BindingInformation "192.168.13.101:8080:NewSite1" -PropertyName 'IPAddress' -Value '192.168.13.100'
নির্দিষ্ট IIS সাইটে একটি নতুন বাইন্ডিং যোগ করতে:
New-IISSiteBinding -Name NewSite1 -BindingInformation "*:9090:" -Protocol http
একটি বাইন্ডিং সরাতে:
Remove-IISSiteBinding -Name NewSite1 -BindingInformation "*:9090:"
অতএব, আপনি IIS ওয়েব সার্ভারে একাধিক সাইট একই IP ঠিকানা এবং TCP পোর্ট নম্বরে, এবং ভিন্ন IP ঠিকানাতেও চালাতে পারেন।