서버 런타임 <서버런타임>

개요

요소는 <serverRuntime> IIS(인터넷 정보 서비스) 7 서버 런타임과 관련된 다음 설정을 구성합니다.

  • enabled 특성을 true로 설정하면 요소가 구성된 URL <serverRuntime> 에서 콘텐츠를 제공하도록 IIS 7이 구성됩니다. 사용 특성을 false로 설정하면 해당 URL에 대한 콘텐츠를 제공하지 않도록 IIS 7이 구성됩니다.

  • alternateHostName 특성은 HTTP Content-location 헤더의 컴퓨터 이름과 다른 호스트 이름을 지정합니다.

  • appConcurrentRequestLimit 특성은 애플리케이션에 대해 큐에 대기할 수 있는 최대 동시 요청 수를 지정합니다.

  • enableNagling 특성은 데이터를 전송하기 전에 필요한 패킷 수를 최소화하여 효율성을 높이는 TCP를 통한 HTTP 최적화인 nagling을 사용하거나 사용하지 않도록 설정합니다. 데이터 영역이 가득 차거나 200밀리초의 시간 제한 기간이 만료될 때까지 또는 보낸 사람에게 데이터 전송이 완료되었음을 표시할 때까지 패킷을 보낼 때까지 대기하여 작동합니다. IIS 버전 5.1 이하에서는 클라이언트로 전송된 모든 데이터에 대해 nagling을 사용합니다.

    참고

    잔소리는 가능한 단점이 있습니다. 확장이 패킷을 채우지 않으면 응답이 전송되기까지 200밀리초의 지연이 있습니다. 이 동작은 클라이언트에 대한 응답에서 HTTP keep-alive 헤더를 지원하는 ISAPI 확장을 사용할 때 가장 자주 표시됩니다. 이 경우 IIS는 응답 후 연결을 닫지 않으므로 최종 패킷은 200밀리초 동안 대기하게 됩니다.

  • IIS 7은 두 특성의 상태 확인하여 특정 URL의 트래픽 수준을 확인합니다. frequentHitThreshold 특성은 요청 수를 구성하고 frequentHitTimePeriod 특성은 해당 URL이 자주 적중될 것으로 판단되기 전에 허용되는 시간을 구성합니다. 이 정보는 이 정보를 처리에 사용하는 HTTP 모듈을 작성할 때 사용됩니다. 자세한 내용은 IHttpUrlInfo::IsFrequentlyHit 메서드 문서를 참조하세요.

  • maxRequestEntityAlloweduploadReadAheadSize 특성은 각각 요청의 엔터티 본문에 허용되는 최대 바이트 수와 웹 서버가 버퍼로 읽고 ISAPI 확장에 전달하는 바이트 수에 대한 제한을 구성합니다. 이러한 값을 늘리면 최종 사용자가 IIS 런타임 메모리 리소스에 영향을 미칠 수 있는 더 많은 콘텐츠를 업로드할 수 있다는 점을 고려해야 합니다. 이러한 값은 애플리케이션 요구 사항과 일치하는 숫자로 유지하는 것이 좋으며 극한 상황에서만 최대값을 사용합니다.

IIS 7.5의 새로운 기능

IIS 7.5는 요소에 <serverRuntime>authenticatedUserOverride 특성을 추가했습니다. 이 특성은 IIS 7 서버 런타임이 IHttpUser::GetPrimaryToken 및 IHttpUser::GetImpersonationToken 메서드에서 인증된 사용자의 ID 또는 작업자 프로세스 ID를 제공할지 여부를 구성합니다. 이 특성은 UseAuthenticatedUser 또는 UseWorkerProcessUser로 설정할 수 있으며, 이러한 값은 각각 IIS 7 서버 런타임이 가장을 사용하는 모듈에 대해 인증된 사용자의 ID 또는 작업자 프로세스 ID를 제공할지 여부를 지정합니다.

호환성

버전 참고
IIS 10.0 <serverRuntime> 요소가 IIS 10.0에서 수정되지 않았습니다.
IIS 8.5 <serverRuntime> 요소가 IIS 8.5에서 수정되지 않았습니다.
IIS 8.0 <serverRuntime> 요소가 IIS 8.0에서 수정되지 않았습니다.
IIS 7.5 인증된UserOverride 특성이 IIS 7.5에 추가되었습니다.
IIS 7.0 요소는 <serverRuntime> IIS 7.0에서 도입되었습니다.
IIS 6.0 요소는 <serverRuntime> 다음 IIS 6.0 메타베이스 속성을 대체합니다.
  • SetHostName
  • MaxRequestEntityAllowed
  • UploadReadAheadSize

설치 프로그램

요소는 <serverRuntime> IIS 7의 기본 설치에 포함됩니다.

방법

IIS 7에 <serverRuntime> 대한 요소를 구성할 수 있는 사용자 인터페이스가 없습니다. 요소를 프로그래밍 방식으로 구성하는 <serverRuntime> 방법에 대한 예제는 이 문서의 코드 샘플 섹션을 참조하세요.

구성

특성

attribute Description
alternateHostName 선택적 문자열 특성입니다.

리디렉션에 사용할 호스트 이름을 지정합니다.
appConcurrentRequestLimit 선택적 uint 특성입니다.

애플리케이션에 대해 큐에 대기할 수 있는 최대 요청 수를 지정합니다.

기본값은 5000입니다.
authenticatedUserOverride 선택적 열거형 특성입니다.

IIS 7 서버 런타임이 가장을 사용하는 모듈에 대해 인증된 사용자의 ID 또는 작업자 프로세스 ID를 제공할지 여부를 지정합니다.

참고: 이 특성은 IIS 7.5에 추가되었습니다.
Description
UseAuthenticatedUser IIS가 인증된 사용자의 토큰을 제공하도록 지정합니다. 이 컨텍스트에서 실행되는 애플리케이션은 인증된 사용자 ID에 대한 액세스 제한으로 제한됩니다.

숫자 값은 입니다 1.
UseWorkerProcessUser IIS가 인증된 사용자의 ID를 사용하는 대신 작업자 프로세스 ID에 대한 토큰을 제공하도록 지정합니다. 이 컨텍스트에서 실행되는 애플리케이션은 작업자 프로세스 ID에 대한 액세스 제한으로 제한됩니다.

숫자 값은 입니다 2.
기본값은 UseAuthenticatedUser입니다.
enabled 선택적 부울 특성입니다.

웹 서버의 애플리케이션이 콘텐츠를 제공할 수 있는지(true) 콘텐츠를 제공할 수 없는지(false) 지정합니다.

기본값은 true입니다.
enableNagling 선택적 부울 특성입니다.

잔소리를 사용할 수 있는지(true) 또는 사용 안 함(false)을 지정합니다.

기본값은 false입니다.
frequentHitThreshold 선택적 uint 특성입니다.

자주 적중된 것으로 간주되도록 frequentHitTimePeriod 특성에 지정된 시간 범위 내에서 URL을 요청해야 하는 횟수를 지정합니다. 값은 1에서 2147483647 사이여야 합니다.

기본값은 2입니다.
frequentHitTimePeriod 선택적 timeSpan 특성입니다.

자주 적중된 것으로 간주되기 전에 FREQUENTHitThreshold 특성에 지정된 횟수를 URL을 요청해야 하는 시간 간격을 지정합니다.

기본값은 (10초)입니다 00:00:10 .
maxRequestEntityAllowed 선택적 uint 특성입니다.

요청의 엔터티 본문에 있을 수 있는 최대 바이트 수를 지정합니다. Content-Length 헤더가 더 큰 숫자를 지정하면 IIS는 HTTP 403 오류 응답을 보냅니다.

기본값은 (무제한)입니다 4294967295 .
uploadReadAheadSize 선택적 uint 특성입니다.

웹 서버가 버퍼로 읽고 ISAPI 확장 또는 모듈에 전달할 바이트 수를 지정합니다. 클라이언트 요청당 한 번 발생합니다. ISAPI 확장 또는 모듈은 클라이언트에서 직접 추가 데이터를 받습니다. 값은 0에서 2147483647 사이여야 합니다.

기본값은 49152입니다.

자식 요소

없음

구성 샘플

다음 구성 샘플에서는 요소의 enable 특성을 true로 설정한 <serverRuntime> 다음, frequentHitThreshold 특성을 5개의 요청으로 설정하고 frequentHitTimePeriod 특성을 20초로 설정하여 URL에 대한 요청 수를 "자주 적중"으로 간주하도록 구성합니다.

<location path="Default Web Site">
   <system.webServer>
      <serverRuntime enabled="true"
         frequentHitThreshold="5"
         frequentHitTimePeriod="00:00:20" />
   </system.webServer>
</location>

샘플 코드

다음 코드 샘플은 요소의 enable 특성을 true로 설정한 <serverRuntime> 다음, frequentHitThreshold 특성을 5개의 요청으로 설정하고 frequentHitTimePeriod 특성을 20초로 설정하여 URL에 대한 요청 수를 "자주 적중"으로 간주하도록 구성합니다.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/serverRuntime /enabled:"True" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/serverRuntime /frequentHitThreshold:"5" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/serverRuntime /frequentHitTimePeriod:"00:00:20" /commit:apphost

참고

AppCmd.exe 사용하여 이러한 설정을 구성할 때 커밋 매개 변수 apphost 를 로 설정해야 합니다. 그러면 구성 설정이 ApplicationHost.config 파일의 적절한 위치 섹션에 커밋됩니다.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();

         ConfigurationSection serverRuntimeSection = config.GetSection("system.webServer/serverRuntime", "Default Web Site");
         serverRuntimeSection["enabled"] = true;
         serverRuntimeSection["frequentHitThreshold"] = 5;
         serverRuntimeSection["frequentHitTimePeriod"] = TimeSpan.Parse("00:00:20");

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration

      Dim serverRuntimeSection As ConfigurationSection = config.GetSection("system.webServer/serverRuntime", "Default Web Site")
      serverRuntimeSection("enabled") = True
      serverRuntimeSection("frequentHitThreshold") = 5
      serverRuntimeSection("frequentHitTimePeriod") = TimeSpan.Parse("00:00:20")

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var serverRuntimeSection = adminManager.GetAdminSection("system.webServer/serverRuntime", "MACHINE/WEBROOT/APPHOST/Default Web Site");
serverRuntimeSection.Properties.Item("enabled").Value = true;
serverRuntimeSection.Properties.Item("frequentHitThreshold").Value = 5;
serverRuntimeSection.Properties.Item("frequentHitTimePeriod").Value = "00:00:20";

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set serverRuntimeSection = adminManager.GetAdminSection("system.webServer/serverRuntime", "MACHINE/WEBROOT/APPHOST/Default Web Site")
serverRuntimeSection.Properties.Item("enabled").Value = True
serverRuntimeSection.Properties.Item("frequentHitThreshold").Value = 5
serverRuntimeSection.Properties.Item("frequentHitTimePeriod").Value = "00:00:20"

adminManager.CommitChanges()