IIS 모듈 및 ASP.NET Core
참고 항목
이 문서의 최신 버전은 아닙니다. 현재 릴리스는 이 문서의 .NET 8 버전을 참조 하세요.
Important
이 정보는 상업적으로 출시되기 전에 실질적으로 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적, 또는 묵시적인 보증을 하지 않습니다.
현재 릴리스는 이 문서의 .NET 8 버전을 참조 하세요.
일부 네이티브 IIS 모듈과 모든 IIS 관리 모듈은 ASP.NET Core 앱에 대한 요청을 처리할 수 없습니다. 대부분의 경우 ASP.NET Core는 IIS 네이티브 및 관리 모듈에서 처리되는 시나리오의 대안을 제공합니다.
네이티브 모듈
이 표는 ASP.NET Core 앱 및 ASP.NET Core 모듈에서 작동하는 네이티브 IIS 모듈을 나타냅니다.
모듈 | ASP.NET Core 앱 기능 | ASP.NET Core 옵션 |
---|---|---|
익명 인증AnonymousAuthenticationModule |
예 | |
기본 인증BasicAuthenticationModule |
예 | |
클라이언트 인증 매핑 인증CertificateMappingAuthenticationModule |
예 | |
CGICgiModule |
아니요 | |
구성 유효성 검사ConfigurationValidationModule |
예 | |
HTTP 오류CustomErrorModule |
아니요 | 상태 코드 페이지 미들웨어 |
사용자 지정 로깅CustomLoggingModule |
예 | |
기본 문서DefaultDocumentModule |
아니요 | 기본 파일 미들웨어 |
다이제스트 인증DigestAuthenticationModule |
예 | |
디렉터리 검색DirectoryListingModule |
아니요 | 디렉터리 검색 미들웨어 |
동적 압축DynamicCompressionModule |
예 | 응답 압축 미들웨어 |
실패한 요청 추적FailedRequestsTracingModule |
예 | ASP.NET Core 로깅 |
파일 캐싱FileCacheModule |
아니요 | 응답 캐싱 미들웨어 |
HTTP 캐싱HttpCacheModule |
아니요 | 응답 캐싱 미들웨어 |
HTTP 로깅HttpLoggingModule |
예 | ASP.NET Core 로깅 |
HTTP 리디렉션HttpRedirectionModule |
예 | URL 재작성 미들웨어 |
HTTP 추적TracingModule |
예 | |
IIS 클라이언트 인증서 매핑 인증IISCertificateMappingAuthenticationModule |
예 | |
IP 및 도메인 제한IpRestrictionModule |
예 | |
ISAPI 필터IsapiFilterModule |
예 | 미들웨어 |
ISAPIIsapiModule |
예 | 미들웨어 |
프로토콜 지원ProtocolSupportModule |
예 | |
요청 필터링RequestFilteringModule |
예 | URL 재작성 미들웨어IRule |
요청 모니터RequestMonitorModule |
예 | |
URL 재작성†RewriteModule |
예 | URL 재작성 미들웨어 |
서버 쪽 포함ServerSideIncludeModule |
아니요 | |
정적 압축StaticCompressionModule |
아니요 | 응답 압축 미들웨어 |
정적 콘텐츠StaticFileModule |
아니요 | 정적 파일 미들웨어 |
토큰 캐싱TokenCacheModule |
예 | |
URI 캐싱UriCacheModule |
예 | |
URL 권한 부여UrlAuthorizationModule |
예 | ASP.NET Core Identity |
WebDavWebDAV |
아니요 | |
Windows 인증WindowsAuthenticationModule |
예 |
†URL 재작성 모듈의 isFile
및 isDirectory
일치 유형이 디렉터리 구조의 변경으로 인해 ASP.NET Core 앱에서 작동하지 않습니다.
관리 모듈
앱 풀의 .NET CLR 버전이 관리 코드 없음으로 설정된 경우 관리 모듈은 호스트된 ASP.NET Core 앱에서 작동하지 ‘않습니다’. ASP.NET Core는 여러 경우에 미들웨어 대체 방법을 제공합니다.
모듈 | ASP.NET Core 옵션 |
---|---|
AnonymousIdentification | |
DefaultAuthentication | |
FileAuthorization | |
FormsAuthentication | Cookie 인증 미들웨어 |
OutputCache | 응답 캐싱 미들웨어 |
프로필 | |
RoleManager | |
ScriptModule-4.0 | |
세션 | 세션 미들웨어 |
UrlAuthorization | |
UrlMappingsModule | URL 재작성 미들웨어 |
UrlRoutingModule-4.0 | ASP.NET Core Identity |
WindowsAuthentication |
IIS 관리자 애플리케이션 변경 내용
IIS 관리자를 사용하여 설정을 구성하는 경우 앱의 web.config 파일이 변경됩니다. 앱을 배포하고 web.config를 포함하는 경우 IIS 관리자를 사용하여 변경한 모든 내용을 배포된 web.config 파일이 덮어씁니다. 서버의 web.config 파일을 변경하는 경우 서버의 업데이트된 web.config 파일을 로컬 프로젝트에 즉시 복사합니다.
IIS 모듈 사용 안 함
IIS 모듈이 앱에 대해 사용되지 않아야 하는 서버 수준에서 구성된 경우 앱의 web.config 파일에 추가하여 모듈을 사용하지 않도록 설정할 수 있습니다. 모듈을 제자리에 두고 구성 설정(사용 가능한 경우)을 사용하여 모듈을 비활성화하거나 앱에서 모듈을 제거합니다.
모듈 비활성화
많은 모듈에서는 앱에서 모듈을 제거하지 않고도 사용하지 않도록 설정할 수 있는 구성 설정을 제공합니다. 이는 모듈을 비활성화하는 가장 간단하고 가장 빠른 방법입니다. 예를 들어 HTTP 리디렉션 모듈은 web.config의 <httpRedirect>
요소로 사용하지 않도록 설정할 수 있습니다.
<configuration>
<system.webServer>
<httpRedirect enabled="false" />
</system.webServer>
</configuration>
구성 설정을 사용하여 모듈을 사용하지 않도록 설정하는 방법에 대한 자세한 내용은 IIS <system.webServer>의 자식 요소 섹션에 있는 링크를 참조하세요.
모듈 제거
web.config에서 설정과 함께 모듈을 제거하도록 선택한 경우 먼저 모듈을 잠금 해제하고 web.config의 <modules>
섹션을 작금 해제합니다.
서버 수준에서 모듈의 잠금을 해제합니다. IIS 관리자 연결 사이드바에서 IIS 서버를 선택합니다. IIS 영역에서 모듈을 엽니다. 목록에서 모듈을 선택합니다. 오른쪽의 작업 사이드바에서 잠금 해제를 선택합니다. 모듈에 대한 작업 항목이 잠금으로 나타나면 모듈이 이미 잠금 해제되어 있으며 작업이 필요하지 않습니다. 나중에 web.config에서 제거하려고 계획한 만큼 모듈을 잠금 해제합니다.
web.config의
<modules>
섹션 없이 앱을 배포합니다. IIS 관리자에서 먼저 섹션을 잠금 해제하지 않고<modules>
섹션이 포함된 web.config를 사용하여 앱을 배포하면 섹션을 잠금 해제하려고 할 때 Configuration Manager에서 예외가 throw됩니다. 따라서<modules>
섹션 없이 앱을 배포합니다.web.config의
<modules>
섹션을 잠금 해제합니다. 연결 사이드바의 사이트에서 웹 사이트를 선택합니다. 관리 영역에서 구성 편집기를 엽니다. 탐색 컨트롤을 사용하여system.webServer/modules
섹션을 선택합니다. 오른쪽의 작업 사이드바에서 섹션을 잠금 해제하도록 선택합니다. 모듈 섹션에 대한 작업 항목이 섹션 잠금으로 나타나면 모듈 섹션이 이미 잠금 해제되어 있으며 작업이 필요하지 않습니다.<modules>
섹션을<remove>
요소가 포함된 앱의 로컬 web.config 파일에 추가하여 앱에서 모듈을 제거합니다. 여러<remove>
요소를 추가하여 여러 모듈을 제거합니다. 서버에서 web.config가 변경되면 로컬에서 프로젝트의 web.config 파일에 동일한 변경 내용이 즉시 적용됩니다. 이 방법을 사용하여 모듈을 제거해도 서버의 다른 앱과 함께 모듈을 사용하는 데 영향을 주지 않습니다.<configuration> <system.webServer> <modules> <remove name="MODULE_NAME" /> </modules> </system.webServer> </configuration>
web.config를 사용하여 IIS Express용 모듈을 추가 또는 제거하려면 applicationHost.config를 수정하여 <modules>
섹션을 잠금 해제합니다.
{APPLICATION ROOT}\.vs\config\applicationhost.config를 엽니다.
IIS 모듈에 대한
<section>
요소를 찾고overrideModeDefault
를Deny
에서Allow
로 변경합니다.<section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Allow" />
<location path="" overrideMode="Allow"><system.webServer><modules>
섹션을 찾습니다. 제거하려는 모듈의 경우lockItem
을true
에서false
로 설정합니다. 다음 예제에서는 CGI 모듈의 잠금이 해제됩니다.<add name="CgiModule" lockItem="false" />
<modules>
섹션과 개별 모듈의 잠금이 해제된 후에는 IIS Express에서 앱을 실행하기 위한 앱의 web.config 파일을 사용하여 IIS 모듈을 추가하거나 제거할 수 있습니다.
IIS 모듈을 Appcmd.exe를 사용하여 제거할 수도 있습니다. 다음 명령에 MODULE_NAME
및 APPLICATION_NAME
을 제공합니다.
Appcmd.exe delete module MODULE_NAME /app.name:APPLICATION_NAME
예를 들어 기본 웹 사이트에서 DynamicCompressionModule
을 제거합니다.
%windir%\system32\inetsrv\appcmd.exe delete module DynamicCompressionModule /app.name:"Default Web Site"
최소 모듈 구성
ASP.NET Core 앱을 실행하는 데 필요한 유일한 모듈은 익명 인증 모듈 및 ASP.NET Core 모듈입니다.
URI 캐싱 모듈(UriCacheModule
)을 통해 IIS가 URL 수준에서 웹 사이트 구성을 캐시할 수 있습니다. 이 모듈이 없으면 동일한 URL이 반복적으로 요청되더라도 IIS는 요청될 때마다 구성을 읽고 구문 분석해야 합니다. 요청될 때마다 구성을 구문 분석하면 성능이 크게 저하됩니다. ‘URI 캐싱 모듈은 호스트된 ASP.NET Core 앱을 실행하는 데 꼭 필요하지는 않지만, 모든 ASP.NET Core 배포에 대해 URI 캐싱 모듈을 사용하도록 설정하는 것이 좋습니다.’
HTTP 캐싱 모듈(HttpCacheModule
)은 IIS 출력 캐시 및 HTTP.sys 캐시에 있는 항목을 캐시하기 위한 논리를 구현합니다. 이 모듈이 없으면 콘텐츠가 커널 모드에서 더 이상 캐시되지 않으며 캐시 프로필이 무시됩니다. 일반적으로 HTTP 캐싱 모듈을 제거하면 성능 및 리소스 사용에 부정적인 영향을 줍니다. ‘HTTP 캐싱 모듈은 호스트된 ASP.NET Core 앱을 실행하는 데 꼭 필요하지는 않지만, 모든 ASP.NET Core 배포에 대해 HTTP 캐싱 모듈을 사용하도록 설정하는 것이 좋습니다.’
추가 리소스
ASP.NET Core