다음을 통해 공유


IIS 7.0에서 구성 위임을 사용하는 방법

작성자: Saad Ladki

요약

이 문서에서는 서버에서 위임된 구성을 사용하도록 설정하는 방법을 설명합니다. 콘텐츠 페이지 및 애플리케이션 코드와 함께 서버 및 애플리케이션에 대한 구성 설정을 배포하는 방법에 대해 설명합니다.

컴퓨터 관리자가 master 구성 파일 %windir%\system32\inetsrv\config\applicationHost.config에서 사용할 애플리케이션 또는 가상 디렉터리를 정의하고 특정 섹션을 위임하도록 허용하면 애플리케이션 수준에서 설정을 제어할 수 있습니다. 애플리케이션의 web.config 파일에서 설정을 설정하면 전역 기본값을 재정의합니다. 컴퓨터의 로컬 관리자가 아니더라도 애플리케이션의 디렉터리에 액세스할 수 있는 경우 가능합니다.

이 문서를 읽은 후에는 전역 수준에서 애플리케이션 및 가상 디렉터리를 정의하고, 위임을 위한 구성 섹션의 잠금을 해제하고, 구성 계층 구조의 하위 수준에서 개별 애플리케이션에 대한 구성 설정을 재정의하는 방법을 알게 됩니다.

소개

IIS를 사용하면 컴퓨터 관리자가 구성을 설정하고 변경하는 작업을 사이트 및 애플리케이션 소유자에게 위임할 수 있습니다. 이렇게 하려면 콘텐츠 디렉터리에서 web.config 파일을 사용합니다. 이러한 파일은 계층 구조의 수준과 아래쪽에 적용되는 구성 섹션을 지정합니다. 컴퓨터 관리자는 이러한 위임을 사용하도록 설정하려면 전역 수준에서 섹션의 잠금을 명시적으로 해제해야 합니다. 기본적으로 대부분의 IIS 섹션은 위임을 위해 잠겨 있으며 모든 .NET 프레임워크 섹션(ASP.NET 포함)은 전역 수준에서 잠겨 있지 않습니다.

이 문서에서는 전역 수준에서 새 애플리케이션 및 가상 디렉터리를 정의하는 방법을 설명합니다(컴퓨터 관리자만 이 작업을 수행할 수 있으며 위임할 수 없음).

그런 다음, 이 문서에서는 애플리케이션 콘텐츠로 web.config xcopy-deploy하여 특정 수준에 대한 일부 설정을 재정의하는 방법을 설명합니다. 또한 구성 시스템의 핵심 개념을 설명하므로 구성 시스템 위에 UI 또는 기타 추상화 없이 구성 파일의 직접 편집을 사용하여 이러한 작업을 수행하는 방법을 설명합니다.

사전 요구 사항

  • IIS 7.0 이상이 컴퓨터에 설치되어 있는지 확인합니다. IE에서 로 http://localhost/ 이동하여 기본 "생성 중" 페이지가 열리는 것을 확인합니다. IIS가 설치되지 않은 경우 설치 지침은 설치 How-To 참조하세요.
  • 컴퓨터에 대한 관리 권한이 있는지 확인합니다. 기본적으로 이 사용자가 컴퓨터의 로컬 Administrators 그룹에 추가된 경우에도 기본 제공 관리자 계정 이외의 사용자로 로그온한 경우에는 해당 사용자가 없습니다. 이는 WINDOWS Server® 2008의 새로운 보안 기능으로, IIS의 scope 넘어서는 LUA입니다. 기본 제공 관리자 계정으로 로그온하거나 필요에 따라 "runas" cmd line 도구를 사용하여 애플리케이션을 기본 제공 관리자로 명시적으로 호출합니다.

예를 들어 notepad.exe 시작하려면 "runas /user:administrator notepad.exe" 명령을 실행합니다. 관리자 계정의 암호를 묻는 메시지가 표시됩니다. "runas /user:administrator cmd.exe"를 실행하여 이미 상승된 cmd-box 셸을 사용하는 것이 유용합니다. 해당 cmd-box에서 실행되는 모든 애플리케이션도 상승되며 해당 cmd-box의 "runas" 구문을 사용할 필요가 없습니다.

  • master 구성 파일이 백업되었는지 확인합니다. 나중에 복원할 수 있도록 applicationHost.config 다른 파일에 복사하기만 하면 됩니다. inetsrv\ 디렉터리 아래에 applicationHost.config 있으며, 이 디렉터리가 시스템 디렉터리 아래에 있습니다.

참고

이 작업을 수행하려면 관리자여야 합니다. 위의 이전 글머리 기호 지점을 참조하세요.

  • 시작하기 전에 "클린 상태"에 있는지 확인합니다. 이렇게 하려면 이전 연습에서 applicationHost.config 파일에 대한 변경 내용을 되돌리기. (VPC 이미지를 사용하는 경우 가장 쉬운 방법은 상태를 저장하지 않고 이미지를 다시 시작하는 것입니다.)
  • 더 빠른 문제 해결을 위해 IE(도구>옵션>고급)에서 친숙한 HTTP 오류 메시지를 끄는 것이 좋습니다.

1단계: 새 애플리케이션 정의

  1. 메모장과 같은 텍스트 편집기를 사용하여 다음 위치에서 ApplicationHost.config 파일을 엽니다.

    %windir%\system32\inetsrv\config\applicationHost.config
    
  2. <sites> 다음과 유사한 섹션으로 이동합니다.

    <sites>
        <siteDefaults>
            <logFile directory="C:\WINDOWS\System32\LogFiles" />
        </siteDefaults>
         <applicationDefaults applicationPool="DefaultAppPool"/>
         <site name="Default Web Site" id="1">
            <bindings>
              <binding protocol="http" bindingInformation="*:80:" />
            </bindings>
                    <application path="/">
              <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot" />
            </application>
             <logFile directory="C:\WINDOWS\System32\LogFiles" />
        </site>
    </sites>
    
  3. 웹 서버가 실행 중이고 기본 웹 사이트에 액세스할 수 있는지 확인합니다. 이렇게 하려면 브라우저를 시작하고 요청합니다. http://localhost/

  4. 요청은 웹 페이지를 반환해야 합니다. 그렇지 않은 경우 명령 상자에서 "net start w3svc"를 입력하여 IIS 서버를 시작하거나 Windows 이벤트 로그 뷰어를 사용하여 문제를 해결합니다.

  5. 브라우저에서 요청 http://localhost/

    가상 경로가 아직 구성에 정의되지 않았기 때문에 이 요청은 페이지를 반환하지 않습니다(오류 페이지가 표시됨). 다음 절차입니다.

  6. ApplicationHost.config 파일에서 최상위 <virtualDirectory> 요소가 포함된 경로 "/app"이 있는 요소를 추가 <application> 합니다. 최상위 가상 디렉터리가 경로 "/"인 디렉터리입니다. 가상 디렉터리의 실제 경로에 대해 를 지정 C:\tmp합니다(또는 나중에 작업할 것과 유사한 경로).

    완료되면 섹션은 <sites> 다음과 유사합니다.

    <sites>
        <siteDefaults>
            <logFile directory="C:\WINDOWS\System32\LogFiles" />
        </siteDefaults>
         <applicationDefaults applicationPool="DefaultAppPool"/>
         <site name="Default Web Site" id="1">
           <bindings>
             <binding protocol="http" bindingInformation="*:80:" />
           </bindings>
                   <application path="/">
             <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot" />
           </application>
           <application path="/app" >
            <virtualDirectory path="/" physicalPath="C:\tmp" />
          </application>
            <logFile directory="C:\WINDOWS\System32\LogFiles" />
        </site>
    </sites>
    

    구성 파일에서 새 애플리케이션을 정의했습니다.

  7. 브라우저에서 요청 http://localhost/

    웹 서버는 디렉터리 검색을 사용할 수 없다는 오류 페이지를 반환합니다. 이 문제는 에 아직 c:\tmp콘텐츠가 없으므로 서버가 디렉터리를 찾아보기 위한 요청으로 요청을 처리하고 있기 때문입니다. 디렉터리 c:\tmp 에서 \inetpub\wwwroot iisstart.htm 복사하고 브라우저를 새로 고칩니다. 이제 생성 중 페이지가 표시됩니다.

2단계: 구성 섹션 잠금 해제

  1. 메모장과 같은 텍스트 편집기를 사용하여 applicationHost.config 열고 인증> 섹션 그룹을 찾<습니다.

  2. 다음과 같이 파일의 <현재 위치에서 anonymousAuthentication> 및 <windowsAuthentication> 섹션을 overrideMode="Allow"가 있는 파일 아래쪽의 새 위치 태그로 이동합니다.

    <configuration>
      <system.webServer>
        <security>
          <authentication>
           <!-- cut the anonymousAuthentication and windowsAuthentication -->
           <!-- XML elements from this area in the file, and paste below  -->
          </authentication>
        </security>
      </system.webServer>
       <location overrideMode="Allow">
        <system.webServer>
          <security>
            <authentication>
              <!-- paste the 2 sections from above here -->
            </authentication>
          </security>
        </system.webServer>
      </location>
    </configuration>
    

    이제 이러한 섹션은 overrideMode="Allow"를 지정하는 위치 태그에 있으므로 네임스페이스의 하위 수준에서 지나치게 제거할 수 있습니다. 이제 모든 하위 수준 web.config 파일이 이러한 설정을 재정의할 수 있습니다.

3단계: 애플리케이션 수준에서 설정 재정의

  1. 메모장과 같은 텍스트 편집기를 사용하여 애플리케이션 폴더(예: )에 web.config라는 새 텍스트 파일을 만듭니다. c:\tmp

  2. web.config 파일에서 요소와 <system.webServer> 요소를 자식으로 만듭니 <configuration> 다. 요소 내에서 <system.webServer> 요소를 포함하는 요소를 만듭니 <security><authentication> .

  3. 전역 수준에서 기본적으로 켜져 있는 Windows 인증 및 익명 인증 체계를 사용하지 않도록 설정하는 설정을 입력합니다.

    완료되면 web.config 파일은 다음과 같습니다.

    <configuration>
      <system.webServer>
        <security>
          <authentication>
            <windowsAuthentication enabled="false" />
            <anonymousAuthentication enabled="false" />
          </authentication>
        </security>
      </system.webServer>
    </configuration>
    
  4. 브라우저에서 을 요청합니다 http://localhost/app.

    참고

    web.config 파일에서 이 페이지에 대한 모든 인증 방법을 사용하지 않도록 설정했기 때문에 페이지를 볼 수 있는 권한이 없습니다.

  5. 브라우저에서 페이지에 액세스할 수 있는지 요청하고 http://localhost/ 확인합니다. web.config 파일의 구성은 애플리케이션 수준에서만 적용됩니다.

  6. web.config 파일에서 활성화된 특성이 true로 <basicAuthentication> 설정된 요소를 추가하여 기본 인증 을 사용하도록 설정합니다.

    완료되면 web.config 파일은 다음과 같습니다.

    <configuration>
      <system.webServer>
        <security>
          <authentication>
            <windowsAuthentication enabled="false" />
            <anonymousAuthentication enabled="false" />
           <basicAuthentication enabled="true" />
          </authentication>
        </security>
      </system.webServer>
    </configuration>
    
  7. 다시 요청 http://localhost/app 합니다. 일부 구성이 전역 수준에서 잠겨 있고 web.config 파일이 이를 재정의하려고 한다는 오류 페이지가 표시되므로 구성 오류입니다. 이를 resolve 다른 두 섹션과 마찬가지로 전역 수준(applicationHost.config)의 basicAuthentication> 섹션을 재정의하도록 허용<합니다. 그런 다음 브라우저 를 새로 고칩니다.

    이제 기본 인증이 진행되고 있음을 나타내는 사용자 이름 및 암호를 묻는 메시지가 표시됩니다.

  8. 로그온한 사용자의 사용자 이름과 암호를 입력하고 페이지가 표시됩니다.

    를 요청하는 http://localhost/경우 애플리케이션 수준에서만 구성 변경 내용이 적용되므로 사용자 이름과 암호를 입력하라는 메시지가 표시되지 않습니다.

    참고

    서버와 브라우저는 모두 사용자 토큰을 캐시합니다. 처음부터 시작하려는 경우 더 이상 사용자 이름 프롬프트가 표시되지 않으면 브라우저를 닫고 IIS 작업자 프로세스를 중지합니다(또는 Windows 명령줄에서 "net stop /y http'를 실행한 다음, "net start w3svc"를 실행하여 IIS를 다시 시작합니다).

요약

이 문서에서는 applicationHost.config master 구성 파일에서 애플리케이션 및 가상 디렉터리를 정의하는 방법을 설명합니다. 또한 섹션에서 서버 설정을 <system.webServer> 포함하는 애플리케이션별 구성 파일을 배포하는 방법도 설명합니다. ASP.NET 설정과 같은 섹션 그룹의 web.config 파일에 <system.web> 설정을 추가할 수 있습니다.

관리자가 아닌 사용자가 파일에 액세스할 수 없도록 web.config 파일 또는 애플리케이션의 전체 디렉터리에 ACL(액세스 제어 목록)을 설정하는 것이 좋습니다.