Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

Chạy nhiều trang web IIS trên cùng một cổng hoặc địa chỉ IP

Khi bạn cài đặt Dịch vụ thông tin Internet (IIS) trên Windows, một “ Trang web mặc định trống” ”Được tạo theo mặc định và lắng nghe trên cổng HTTP web chuẩn - TCP 80 . Theo thuật ngữ IIS, điều này có nghĩa là trang web này được liên kết với cổng TCP / 80. Để mở trang web này, chỉ cần nhập tên của máy chủ IIS (“https://web-srv1” ) hoặc địa chỉ IP của nó (“https://192.168.1.100” ) trong trình duyệt của bạn. Một máy chủ web IIS duy nhất có thể phục vụ hàng chục và hàng trăm trang web và bạn có thể chạy nhiều trang web trên đó, lắng nghe và phản hồi trên cùng một cổng TCP (80, 443 hoặc bất cứ thứ gì). Tuy nhiên, giao diện của IIS Manager không cho thấy rõ ràng rằng bạn có thể lưu trữ một trang web khác mà không ràng buộc nó với một số cổng khác (ví dụ:8080). Trong bài viết này, chúng tôi sẽ hướng dẫn cách lưu trữ nhiều trang web trên cùng một máy chủ IIS và liên kết chúng với cùng một cổng và địa chỉ IP hoặc với các địa chỉ IP khác nhau.

Chạy nhiều trang web IIS trên cùng một cổng hoặc địa chỉ IP

Nội dung:

  • Liên kết trang web IIS
  • Lưu trữ nhiều trang web trên IIS bằng cách sử dụng Tiêu đề máy chủ lưu trữ
  • Chạy nhiều trang web với các địa chỉ IP khác nhau trên IIS
  • Quản lý các ràng buộc trang web IIS bằng PowerShell

Liên kết trang web IIS

Một máy chủ IIS web duy nhất chạy trên Windows Server có thể lưu trữ nhiều trang web. Tuy nhiên, để IIS phân phối các yêu cầu HTTP một cách chính xác, mỗi trang web phải được xác định với một số giá trị duy nhất. Trong trường hợp của một trang web IIS, nó bao gồm ba thuộc tính tạo nên sự kết hợp duy nhất cho mỗi trang web. Đây là:

  • một số cổng TCP
  • một địa chỉ IP
  • tiêu đề máy chủ (tên máy chủ)

Thông tin về các trang web được lưu trữ được lưu trữ trong Liên kết máy chủ thuộc tính của siêu dữ liệu IIS ở định dạng sau:IP:Port:Hostname . Do đó, nếu bạn muốn lưu trữ nhiều trang web trên cùng một cổng và địa chỉ IP, bạn sẽ phải sử dụng Tiêu đề máy chủ lưu trữ duy nhất . Nó là gì? Tiêu đề máy chủ lưu trữ là một phần của yêu cầu HTTP tới máy chủ được gửi bởi máy khách để chỉ định trang web mà nó được gửi đến. Theo đó, tiêu đề máy chủ này phải được chỉ định ở phía bên của máy chủ web và DNS chứa bản ghi chính xác khớp với tên máy chủ và địa chỉ IP của máy chủ web IIS.

Giả sử bạn có một trang web chạy trên IIS và cổng 80 đang nghe. Và bạn cần liên kết trang web thứ hai với cùng một cổng.

Trong Trình quản lý IIS, hãy tạo một trang web khác ( Thêm trang web ) với tên TestSite, tệp nào sẽ được đặt trong c:\ inetpub \ TestSite (chưa chỉ định tên máy chủ).

Chạy nhiều trang web IIS trên cùng một cổng hoặc địa chỉ IP

Sau khi bạn nhấp vào OK, một cảnh báo xuất hiện rằng bạn không thể sử dụng liên kết *:8 0 cho cả hai trang web.

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?

Chạy nhiều trang web IIS trên cùng một cổng hoặc địa chỉ IP

Đồng ý với cảnh báo này. Vì vậy, bạn có một trang web khác bị ràng buộc với cổng 80, bạn không thể bắt đầu nó mà không dừng trang đầu tiên.

Chạy nhiều trang web IIS trên cùng một cổng hoặc địa chỉ IP

Lưu trữ Nhiều Trang web trên IIS sử dụng Tiêu đề Máy chủ lưu trữ

Để tạo một ràng buộc duy nhất, hãy chỉ định một tên khác (Tên Máy chủ) cho trang web IIS thứ hai. Nhấp chuột phải vào TestSite và chọn Chỉnh sửa Ràng buộc . Chọn liên kết bạn cần và nhấp vào Chỉnh sửa .

Chỉ định tên máy chủ lưu trữ duy nhất mà người dùng sẽ giải quyết, như TestSite, trong Máy chủ lưu trữ Tên trường.

Chạy nhiều trang web IIS trên cùng một cổng hoặc địa chỉ IP

Bạn có thể cấu hình liên kết trang IIS bằng dấu nhắc lệnh. Trong trường hợp này, đối với IIS 7 hoặc mới hơn, lệnh định cấu hình liên kết sẽ giống như sau:

C:\Windows\System32\inetsrv\appcmd.exe set site /site.name:testsite /+bindings.[protocol='http',bindingInformation='*:80:testsite']

Bây giờ bạn cũng có thể bắt đầu trang web thứ hai.

Chạy nhiều trang web IIS trên cùng một cổng hoặc địa chỉ IP

Tất cả những gì bạn phải làm là thêm bí danh DNS cho máy chủ (A hoặc CNAME) để trỏ đến địa chỉ IP hoặc tên máy chủ của máy chủ web IIS của bạn. Nếu bạn đang sử dụng miền Active Directory, bạn cần tạo bản ghi DNS trên bộ điều khiển miền.

Bạn có thể tạo CNAME ghi lại trang web kiểm tra tên trong bảng điều khiển DNS (dnsmgmt.msc ) và chỉ định tên miền của máy chủ IIS của bạn làm máy chủ đích FQDN.

Chạy nhiều trang web IIS trên cùng một cổng hoặc địa chỉ IP

Bản ghi DNS này cũng có thể được tạo bằng PowerShell:

Add-DnsServerResourceRecordCName -HostNameAlias web-srv1.woshub.com -Name testsite -ZoneName woshub.com

Cố gắng mở https://TestSite trong trình duyệt của bạn. Nó sẽ mở thành công.

Chạy nhiều trang web IIS trên cùng một cổng hoặc địa chỉ IP

Dưới đây là một số lưu ý hữu ích đáng được đề cập.

Nếu bạn đang sử dụng một máy chủ IIS độc lập, ánh xạ tên trang web tới địa chỉ IP của máy chủ được thực hiện thông qua tệp C:\Windows\system32\drivers\etc\hosts

Cài đặt liên kết được lưu trữ trong phần tệp cấu hình IIS của tệp cấu hình IIS C:\Windows\System32\inetsrv\config\applicationHost.config .

Trong trường hợp của chúng tôi, phần này chứa dữ liệu sau:

<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>

Tương tự như vậy, bạn có thể lưu trữ và chạy hàng trăm trang web trên cùng một cổng của máy chủ web IIS của mình.

Chạy nhiều trang web với các địa chỉ IP khác nhau trên IIS

Bây giờ chúng ta hãy thử chạy hai trang web trên máy chủ web IIS ở các địa chỉ IP khác nhau. Trước hết, bạn cần thêm một giao diện VLAN riêng trên Windows Server hoặc chỉ cần gán một địa chỉ IP (bí danh) bổ sung cho NIC của bạn.

Trong ví dụ này, máy chủ có địa chỉ IP chính 192.168.13.100 và tôi sẽ thêm bí danh IP bổ sung 192.168.13.101 vào cùng một bộ điều hợp mạng:

Get-NetIPAddress | ft IPAddress, InterfaceAlias, SkipAsSource
New-NetIPAddress –IPAddress 192.168.13.101 –PrefixLength 24 –InterfaceAlias “Ethernet” –SkipAsSource $True

Bây giờ bạn cần tạo bản ghi A cho trang web mới trên máy chủ DNS (chúng tôi sẽ tạo thêm bản ghi PTR trong vùng ngược lại với –CreatePtr tùy chọn):

Add-DnsServerResourceRecordA -Name NewSite3 -IPv4Address 192.168.13.101 -ZoneName woshub.com -TimeToLive 01:00:00 –CreatePtr

Bạn vẫn phải mở cài đặt Liên kết trang web và liên kết trang web với địa chỉ IP bổ sung của máy chủ lưu trữ của bạn.

Quản lý Liên kết Trang web IIS bằng PowerShell

Bạn có thể quản lý liên kết các trang web trên máy chủ IIS bằng PowerShell. Đối với điều này, mô-đun WebAdministration được sử dụng:

Import-Module WebAdministration

Hiển thị thông tin về tất cả các trang IIS có sẵn và các ràng buộc của chúng:

Get-IISSite

Hoặc về một trang web duy nhất:

(Get-Website -Name NewSite).bindings.Collection

protocol bindingInformation sslFlags
-------- ------------------ --------
http 192.168.13.101:80:NewSite3 0

Để thay đổi liên kết của trang web này (bạn có thể thay đổi địa chỉ IP, cổng hoặc tên):

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'

Để thêm một liên kết mới vào trang IIS cụ thể, hãy chạy:

New-IISSiteBinding -Name NewSite1 -BindingInformation "*:9090:" -Protocol http

Để loại bỏ một ràng buộc:

Remove-IISSiteBinding -Name NewSite1 -BindingInformation "*:9090:"

Do đó, bạn có thể chạy một số trang web trên máy chủ web IIS cả trên các địa chỉ IP khác nhau và trên cùng một địa chỉ IP và số cổng TCP.