웹 사이트 리소스
웹 사이트는 요청을 처리할 위치와 방법을 결정하는 IIS의 핵심 엔터티입니다. 웹 사이트 API를 사용하면 소비자가 웹 사이트를 만들거나, 읽고, 삭제하거나, 업데이트할 수 있습니다. 자동화된 배포를 스크립팅하거나 기존 리소스를 변경하는 데 적합합니다.
get/api/webserver/websites/{id}
{
"name": "Default Web Site",
"id": "{id}",
"physical_path": "%SystemDrive%\\inetpub\\wwwroot",
"key": "1",
"status": "started",
"server_auto_start": "true",
"enabled_protocols": "http",
"limits": {
"connection_timeout": "120",
"max_bandwidth": "4294967295",
"max_connections": "4294967295",
"max_url_segments": "32"
},
"bindings": [
{
"protocol": "https",
"binding_information": "*:443:",
"ip_address": "*",
"port": "443",
"hostname": "",
"certificate": {
"name": "Web Hosting Certificate",
"id": "{certificate_id}",
"issued_by": "CN=localhost",
"subject": "CN=localhost",
"thumbprint": "2F6C0E796B8DAC4A1DDBF59F1714A19D9520B88A",
"valid_to": "2022-01-09T00:00:00Z"
},
"require_sni": "false"
},
{
"protocol": "http",
"binding_information": "*:80:",
"ip_address": "*",
"port": "80",
"hostname": ""
},
{
"protocol": "net.tcp",
"binding_information": "808:*"
}
],
"application_pool": {
"name": "DefaultAppPool",
"id": "{application_pool_id}",
"status": "started"
},
"_links": {
"authentication": {
"href": "/api/webserver/authentication/{authentication_id}"
},
"authorization": {
"href": "/api/webserver/authorization/{authorization_id}"
},
"default_document": {
"href": "/api/webserver/default-documents/{default_document_id}"
},
"delegation": {
"href": "/api/webserver/feature-delegation?website.id={id}"
},
"directory_browsing": {
"href": "/api/webserver/directory-browsing/{directory_browsing_id}"
},
"files": {
"href": "/api/webserver/files/{files_id}"
},
"handlers": {
"href": "/api/webserver/http-handlers/{handlers_id}"
},
"ip_restrictions": {
"href": "/api/webserver/ip-restrictions/{ip_restrictions_id}"
},
"logging": {
"href": "/api/webserver/logging/{logging_id}"
},
"modules": {
"href": "/api/webserver/http-modules/{modules_id}"
},
"request_filtering": {
"href": "/api/webserver/http-request-filtering/{request_filtering_id}"
},
"request_monitor": {
"href": "/api/webserver/http-request-monitor/requests?website.id={request_monitor_id}"
},
"request_tracing": {
"href": "/api/webserver/http-request-tracing/{request_tracing_id}"
},
"response_compression": {
"href": "/api/webserver/http-response-compression/{response_compression_id}"
},
"response_headers": {
"href": "/api/webserver/http-response-headers/{response_headers_id}"
},
"ssl": {
"href": "/api/webserver/ssl-settings/{ssl_id}"
},
"static_content": {
"href": "/api/webserver/static-content/{static_content_id}"
},
"vdirs": {
"href": "/api/webserver/virtual-directories?website.id={id}"
},
"webapps": {
"href": "/api/webserver/webapps?website.id={id}"
}
}
}
웹 사이트의 바인딩은 사이트에서 수신 대기할 포트, 프로토콜 및 호스트 이름을 결정합니다. 적어도 바인딩은 프로토콜, IP 추가 주소 및 포트를 지정해야 합니다. binding_information 속성을 사용하여 IP 주소, 포트 및 호스트 이름을 지정할 수 있습니다. binding_information 형식은 HTTP 및 HTTPS 프로토콜의 경우 '{ip_address}:{port}:{hostname}'입니다. HTTPS 바인딩에는 인증서가 필요합니다.
웹 사이트를 만들려면 웹 사이트를 저장할 실제 경로, 웹 사이트의 이름 및 웹 사이트에서 수신 대기해야 하는 바인딩 집합이 필요합니다.
포트 8081에서 수신 대기하는 웹 사이트 만들기 POST/api/webserver/websites
{
"name": "Demonstration Site",
"physical_path": "C:\\inetpub\\wwwroot\\DemonstrationSite",
"bindings": [
{
"protocol": "HTTP",
"port": "8081",
"ip_address": *
}
]
}
HTTPS 바인딩을 사용하여 사이트를 만들려면 바인딩 개체에 인증서를 제공해야 합니다. 인증서는 /api/certificates 엔드포인트를 통해 사용할 수 있는 리소스입니다. 바인딩에서 원하는 인증서를 지정하려면 아래와 같이 인증서 리소스를 추가하고 인증서 ID 지정합니다.
포트 8082에서 HTTPS 요청을 수신 대기하는 웹 사이트를 만듭니다. POST/api/webserver/websites
{
"name": "Demonstration Site",
"physical_path": "C:\\inetpub\\wwwroot\\DemonstrationSite",
"bindings": [
{
"protocol": "HTTPS",
"port": "8082",
"ip_address": *,
"certificate": {
"id": {certificate_id}
}
}
]
}
웹 사이트를 만들어야 하는 애플리케이션 풀을 지정하려면 요청 본문에 application_pool 속성을 추가합니다. 애플리케이션 풀은 id 속성으로만 식별됩니다.
특정 애플리케이션 풀에 대한 웹 사이트 만들기 POST/api/webserver/websites
{
"name": "Demonstration Site",
"physical_path": "C:\\inetpub\\wwwroot\\DemonstrationSite",
"bindings": [
{
"protocol": "HTTP",
"port": "8081",
"ip_address": *
}
],
"application_pool": {
"id": {application_pool_id}
}
}
웹 사이트 업데이트는 패치 요청을 통해 수행됩니다. 원하는 상태의 웹 사이트를 사용하여 패치 요청을 보내면 서버의 웹 사이트가 일치하도록 업데이트됩니다.
웹 사이트를 업데이트하는 일반적인 이유는 바인딩을 추가하는 것입니다. 예를 들어 포트 80에 단일 바인딩이 있는 웹 사이트가 있으며 포트 8080에서 수신 대기하는 바인딩을 추가하려고 합니다. 원하는 바인딩이 모두 포함된 바인딩 목록이 포함된 패치 요청을 보내야 합니다. 바인딩 속성은 목록이므로 웹 사이트에 이미 있는 바인딩은 손실되지 않도록 요청의 일부로 전송되어야 합니다.
웹 사이트에 바인딩을 추가합니다. PATCH/api/webserver/websites/{id}
{
"bindings": [
{
"protocol": "HTTP",
"port": "80",
"ip_address": *
},
{
"protocol": "HTTP",
"port": "8080",
"ip_address": *
}
]
}