ค้นหาเว็บไซต์

เรียกใช้เว็บไซต์ IIS หลายเว็บไซต์บนพอร์ตหรือที่อยู่ IP เดียวกัน


เมื่อคุณติดตั้ง Internet Information Services (IIS) บน Windows จะมีการสร้าง “Default Web Site” ที่ว่างเปล่าตามค่าเริ่มต้นและรับฟังพอร์ต HTTP ของเว็บมาตรฐาน - TCP 80 ในแง่ IIS หมายความว่าไซต์นี้เชื่อมโยงกับพอร์ต TCP/80 หากต้องการเปิดไซต์นี้ เพียงป้อนชื่อเซิร์ฟเวอร์ IIS (

“http://web-srv1”

) หรือที่อยู่ IP (

“http://192.168.1.100”

) ในเบราว์เซอร์ของคุณ เว็บเซิร์ฟเวอร์ IIS เดียวสามารถให้บริการเว็บไซต์ได้หลายสิบหลายร้อยเว็บไซต์ และคุณสามารถเรียกใช้เว็บไซต์หลายเว็บไซต์บนเซิร์ฟเวอร์นั้น ฟังและตอบสนองบนพอร์ต TCP เดียวกัน (80, 443 หรืออะไรก็ตาม) อย่างไรก็ตาม อินเทอร์เฟซของ IIS Manager ไม่ได้ระบุว่าคุณสามารถโฮสต์เว็บไซต์อื่นได้โดยไม่ผูกกับพอร์ตอื่น (เช่น 8080) ในบทความนี้ เราจะแสดงวิธีการโฮสต์หลายเว็บไซต์บนเซิร์ฟเวอร์ IIS เดียวกัน และผูกเว็บไซต์เหล่านั้นกับพอร์ตและที่อยู่ IP เดียวกัน หรือกับที่อยู่ IP ที่แตกต่างกัน

การผูกเว็บไซต์ IIS

เว็บเซิร์ฟเวอร์ IIS เดียวที่ทำงานบน Windows Server สามารถโฮสต์เว็บไซต์ได้หลายเว็บไซต์ อย่างไรก็ตาม เพื่อให้ IIS กระจายคำขอ HTTP ได้อย่างถูกต้อง แต่ละเว็บไซต์จะต้องระบุค่าที่ไม่ซ้ำกัน ในกรณีของเว็บไซต์ IIS จะประกอบด้วยแอตทริบิวต์สามรายการที่ประกอบกันเป็นชุดเฉพาะสำหรับแต่ละเว็บไซต์ เหล่านี้คือ:

  • หมายเลขพอร์ต TCP

  • ที่อยู่ IP

  • ส่วนหัวของโฮสต์ (ชื่อโฮสต์)

ข้อมูลเกี่ยวกับเว็บไซต์ที่โฮสต์จะถูกเก็บไว้ในแอตทริบิวต์ ServerBindings ของ IIS metabase ในรูปแบบต่อไปนี้:

IP:Port:Hostname

. ดังนั้น หากคุณต้องการโฮสต์หลายเว็บไซต์บนพอร์ตและที่อยู่ IP เดียวกัน คุณจะต้องใช้ส่วนหัวของโฮสต์ที่ไม่ซ้ำกัน มันคืออะไร? ส่วนหัวของโฮสต์เป็นส่วนหนึ่งของคำขอ HTTP ไปยังเซิร์ฟเวอร์ที่ส่งโดยไคลเอ็นต์ซึ่งระบุว่าส่งไปยังเว็บไซต์ใด ดังนั้น ส่วนหัวของโฮสต์นี้จะต้องระบุที่ด้านข้างของเว็บเซิร์ฟเวอร์ และ DNS จะมีบันทึกที่ถูกต้องซึ่งตรงกับชื่อโฮสต์และที่อยู่ IP ของเว็บเซิร์ฟเวอร์ IIS

สมมติว่าคุณมีเว็บไซต์ที่ทำงานบน IIS และฟังพอร์ต 80 และคุณต้องผูกเว็บไซต์ที่สองเข้ากับพอร์ตเดียวกัน

ใน IIS Manager ให้สร้างเว็บไซต์อื่น (เพิ่มเว็บไซต์) ด้วยชื่อ TestSite ซึ่งไฟล์จะอยู่ใน c:\inetpub\TestSite (ยังไม่ได้ระบุชื่อโฮสต์)

หลังจากที่คุณคลิกตกลง คำเตือนจะปรากฏขึ้นว่าคุณไม่สามารถใช้การเชื่อมโยง *: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?

เห็นด้วยกับคำเตือนนี้ คุณมีไซต์อื่นที่เชื่อมโยงกับพอร์ต 80 คุณไม่สามารถเริ่มได้โดยไม่หยุดไซต์แรก

การโฮสต์หลายเว็บไซต์บน IIS โดยใช้ส่วนหัวของโฮสต์

หากต้องการสร้างการเชื่อมโยงเฉพาะ ให้ระบุชื่ออื่น (ชื่อโฮสต์) สำหรับเว็บไซต์ IIS ที่สอง คลิกขวาที่ TestSite และเลือก Edit Bindings เลือกการเชื่อมโยงที่คุณต้องการแล้วคลิกแก้ไข

ระบุชื่อโฮสต์เฉพาะที่ผู้ใช้จะระบุ เช่น 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.a-d.site -Name testsite -ZoneName a-d.site

ลองเปิดดู

http://TestSite

ในเบราว์เซอร์ของคุณ ควรเปิดสำเร็จ

ต่อไปนี้เป็นบันทึกที่มีประโยชน์ที่ควรค่าแก่การกล่าวถึง

หากคุณใช้เซิร์ฟเวอร์ IIS แบบสแตนด์อโลน การแมปชื่อเว็บไซต์กับที่อยู่ IP ของเซิร์ฟเวอร์จะทำผ่านไฟล์

C:\Windows\system32\drivers\etc\hosts

การตั้งค่าการผูกจะถูกเก็บไว้ในส่วนไฟล์กำหนดค่า IIS ของไฟล์กำหนดค่า 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 a-d.site -TimeToLive 01:00:00 -CreatePtr

ยังคงเปิดการตั้งค่าการผูกไซต์และผูกไซต์กับที่อยู่ 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 เดียวกัน

บทความที่เกี่ยวข้อง