เมื่อคุณติดตั้ง Internet Information Services (IIS) บน Windows จะมี “เว็บไซต์เริ่มต้น . ที่ว่างเปล่า ” ถูกสร้างโดยค่าเริ่มต้นและรับฟังบนพอร์ต HTTP ของเว็บมาตรฐาน – TCP 80 . ตามเงื่อนไขของ IIS หมายความว่าไซต์นี้เชื่อมโยงกับพอร์ต TCP/80 หากต้องการเปิดไซต์นี้ เพียงป้อนชื่อเซิร์ฟเวอร์ IIS (“https://web-srv1”
) หรือที่อยู่ IP (“https://192.168.1.100”
) ในเบราว์เซอร์ของคุณ เว็บเซิร์ฟเวอร์ IIS เดียวสามารถให้บริการได้หลายสิบและหลายร้อยเว็บไซต์ และคุณสามารถเรียกใช้เว็บไซต์ได้หลายเว็บไซต์ รับฟังและตอบสนองบนพอร์ต TCP เดียวกัน (80, 443 หรืออะไรก็ตาม) อย่างไรก็ตาม อินเทอร์เฟซของ IIS Manager ไม่ได้ทำให้ชัดเจนว่าคุณสามารถโฮสต์เว็บไซต์อื่นได้โดยไม่ต้องผูกกับพอร์ตอื่น (เช่น 8080) ในบทความนี้ เราจะแสดงวิธีการโฮสต์เว็บไซต์หลายเว็บไซต์บนเซิร์ฟเวอร์ IIS เดียวกัน และผูกเข้ากับพอร์ตและที่อยู่ IP เดียวกัน หรือกับที่อยู่ IP ที่แตกต่างกัน
สารบัญ:
- การผูกเว็บไซต์ IIS
- การโฮสต์หลายเว็บไซต์บน IIS โดยใช้ส่วนหัวของโฮสต์
- เรียกใช้หลายไซต์ด้วยที่อยู่ IP ต่างกันบน IIS
- การจัดการการเชื่อมโยงไซต์ IIS โดยใช้ PowerShell
การผูกเว็บไซต์ IIS
เว็บเซิร์ฟเวอร์ IIS เดียวที่ทำงานบน Windows Server สามารถโฮสต์ได้หลายเว็บไซต์ อย่างไรก็ตาม เพื่อให้ IIS สามารถแจกจ่ายคำขอ HTTP ได้อย่างถูกต้อง แต่ละเว็บไซต์จะต้องระบุด้วยค่าที่ไม่ซ้ำกัน ในกรณีของเว็บไซต์ IIS จะประกอบด้วยสามแอตทริบิวต์ที่ประกอบขึ้นเป็นชุดค่าผสมที่ไม่ซ้ำกันสำหรับแต่ละเว็บไซต์ เหล่านี้คือ:
- หมายเลขพอร์ต TCP
- ที่อยู่ IP
- ส่วนหัวของโฮสต์ (ชื่อโฮสต์)
ข้อมูลเกี่ยวกับเว็บไซต์ที่โฮสต์ถูกเก็บไว้ใน ServerBindings แอตทริบิวต์ของ IIS metabase ในรูปแบบต่อไปนี้:IP:Port:Hostname
. ดังนั้น หากคุณต้องการโฮสต์หลายเว็บไซต์บนพอร์ตและที่อยู่ IP เดียวกัน คุณจะต้องใช้ส่วนหัวของโฮสต์ . มันคืออะไร? ส่วนหัวของโฮสต์เป็นส่วนหนึ่งของคำขอ HTTP ที่ส่งไปยังเซิร์ฟเวอร์ที่ส่งโดยไคลเอนต์ซึ่งระบุว่าจะถูกส่งไปยังเว็บไซต์ใด ดังนั้น ต้องระบุส่วนหัวของโฮสต์นี้ที่ด้านข้างของเว็บเซิร์ฟเวอร์ และ DNS มีบันทึกที่ถูกต้องที่ตรงกับชื่อโฮสต์และที่อยู่ IP ของเว็บเซิร์ฟเวอร์ IIS
สมมติว่าคุณมีเว็บไซต์ที่ทำงานบน IIS และกำลังฟังพอร์ต 80 และคุณต้องผูกเว็บไซต์ที่สองเข้ากับพอร์ตเดียวกัน
ในตัวจัดการ IIS ให้สร้างเว็บไซต์อื่น (เพิ่มเว็บไซต์ ) ด้วยชื่อ TestSite ซึ่งไฟล์จะอยู่ใน c:\inetpub\TestSite (ยังไม่ระบุชื่อโฮสต์)
หลังจากที่คุณคลิกตกลง คำเตือนปรากฏขึ้นว่าคุณไม่สามารถใช้การเชื่อมโยง *:8 0 สำหรับทั้งสองไซต์
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?
เห็นด้วยกับคำเตือนนี้ ดังนั้น คุณมีไซต์อื่นที่ผูกไว้กับพอร์ต 80 คุณไม่สามารถเริ่มต้นได้โดยไม่หยุดไซต์แรก
การโฮสต์หลายเว็บไซต์บน IIS โดยใช้ส่วนหัวของโฮสต์
หากต้องการสร้างการเชื่อมโยงที่ไม่ซ้ำ ให้ระบุชื่ออื่น (ชื่อโฮสต์) สำหรับเว็บไซต์ IIS ที่สอง คลิกขวาที่ TestSite แล้วเลือกแก้ไข การผูกมัด . เลือกการผูกที่คุณต้องการแล้วคลิกแก้ไข .
ระบุชื่อโฮสต์เฉพาะที่ผู้ใช้จะระบุ เช่น TestSite ใน โฮสต์ ชื่อ สนาม
คุณสามารถกำหนดค่าการเชื่อมโยงไซต์ IIS โดยใช้พรอมต์คำสั่ง ในกรณีนี้ สำหรับ IIS 7 หรือใหม่กว่า คำสั่งกำหนดค่าการเชื่อมโยงจะมีลักษณะดังนี้:
C:\Windows\System32\inetsrv\appcmd.exe set site /site.name:testsite /+bindings.[protocol='http',bindingInformation='*:80:testsite']
ตอนนี้คุณสามารถเริ่มเว็บไซต์ที่สองได้เช่นกัน
สิ่งที่คุณต้องทำคือเพิ่มชื่อแทน DNS สำหรับเซิร์ฟเวอร์ (A หรือ CNAME) เพื่อชี้ไปยังที่อยู่ IP หรือชื่อโฮสต์ของเว็บเซิร์ฟเวอร์ IIS ของคุณ หากคุณกำลังใช้โดเมน Active Directory คุณต้องสร้างระเบียน DNS บนตัวควบคุมโดเมน
คุณสามารถสร้าง CNAME บันทึกสำหรับชื่อไซต์ทดสอบในคอนโซล DNS (dnsmgmt.msc
) และระบุชื่อโดเมนของเซิร์ฟเวอร์ IIS ของคุณเป็นโฮสต์เป้าหมาย FQDN
ระเบียน DNS นี้สามารถสร้างได้โดยใช้ PowerShell:
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 ของคุณ
เรียกใช้หลายไซต์ด้วยที่อยู่ IP ต่างกันบน IIS
ตอนนี้ ให้ลองเรียกใช้สองไซต์บนเว็บเซิร์ฟเวอร์ IIS โดยใช้ที่อยู่ IP ที่ต่างกัน ก่อนอื่น คุณต้องเพิ่มอินเทอร์เฟซ VLAN แยกต่างหากบน Windows Server หรือเพียงแค่กำหนดที่อยู่ IP (นามแฝง) เพิ่มเติมให้กับ NIC ของคุณ
ในตัวอย่างนี้ เซิร์ฟเวอร์มีที่อยู่ 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
ตอนนี้ คุณต้องสร้างระเบียน A สำหรับไซต์ใหม่บนเซิร์ฟเวอร์ DNS (เราจะสร้างระเบียน PTR เพิ่มเติมในโซนย้อนกลับด้วย –CreatePtr ตัวเลือก):
Add-DnsServerResourceRecordA -Name NewSite3 -IPv4Address 192.168.13.101 -ZoneName woshub.com -TimeToLive 01:00:00 –CreatePtr
ยังคงเปิดการตั้งค่า Site Binding และผูกเว็บไซต์กับที่อยู่ IP เพิ่มเติมของโฮสต์ของคุณ
การจัดการการเชื่อมโยงไซต์ IIS โดยใช้ PowerShell
คุณสามารถจัดการการเชื่อมโยงไซต์บนเซิร์ฟเวอร์ IIS โดยใช้ PowerShell สำหรับสิ่งนี้ โมดูล 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 ที่ต่างกัน และบนที่อยู่ IP เดียวกันและหมายเลขพอร์ต TCP เดียวกัน