Internet Information Services 7 - Microsoft

gayheadtibburInternet and Web Development

Feb 5, 2013 (4 years and 9 months ago)

233 views

{

overview
}

Bernhard Frank

Web Platform Architect Evangelist

Microsoft Corporation

Konfiguration

Administration

Architektur

Sicherheit

Erweiterbarkeit

Troubleshooting

& Diagnose

Weiteres

Machine.config

Root
Web.config

ApplicationHost.config

Web.config

.NET

Framework

ASP.NET

IIS7

IIS +

ASP.NET +

.NET Framework

ASP.NET +

.NET
Framework

Integration von
bekanntem

(.NET
config
)

<
system.webServer
>

Mit

neuem

Applicationhost.config



Websites auf n
-
Webserver

Ideal
für

Serverfarmen

/ LB
Szenarien

/
Migration

Eine

Konfigurations
-
Datei




ApplicationHost.config

<handlers>


<add name=“
ASPClassic
” path=“.asp” verb=“GET,HEAD,POST,TRACE”


scriptProcessor
=“D:
\
WINDOWS
\
system32
\
inetsrv
\
asp.dll”


resourceType
=“File” />




<add name="PHP with
FastCGI
" path="*.php" verb="*“


modules="
FastCgiModule
"
scriptProcessor
="C:
\
php
\
php
-


cgi.exe"
resourceType
="Unspecified" />



< … other elements here … />

</handlers>

IIS 7.0
Applicationhost.config
:

{
konfiguration
}
IIS MMC

Web.config

Delegation


Klares XML Schema

Delegierbar

IIS Konfigurationen an den Entwickler übertragen.

Server
-
Admin bestimmt welche Features delegiert
werden.

Editieren mit dem Texteditor, die API oder das Admin
-
Tool.

Einheitlichtes

Konfigurations
-
Model für IIS und ASP.net

API für Zugriff auf die Konfiguration


xcopy

deployment
” (Konfiguration neben Inhalten)

Erweiterbar und Anpassungsfähig

Nur für Administratoren!

Wenig ergonomische UI (“…wo war
nochmal…”)

Zuviele

Register

DCOM
remoting

Die
Neue



IIS und ASP.NET Einstellungen an einer
Stelle vorzunehmen.

Die ‘Lebenszeichen’ der Websites zu
überprüfen.

Die Verwaltung remote durchzuführen.

Die UI zu erweitern und eigene
Verwaltungs
-
Funktionen einzubauen.


%
windir
%
\
System32
\
inetsrv

Anlegen

und
Konfigurieren

(von Websites,
Applications, Pools, Backups und
virtuellen

Directories)

Starten

und
Stoppen

von Websites und
recyclen

von Pools

Gegenwärtig

ausgeführten

http
-
Anfragen

Suchen
,
manipulieren
,
exportieren

und
importieren

von IIS und ASP.net
Einstellungen


APPCMD.EXE <COMMAND> <OBJECT> <ID> [
/
parameter:value

]*



“Next generation shell”

Objekt

orientiert

Kombiniert

die
Idee

einer

Shell
mit

einer

mächtigen

Skript

Sprache

Auch

komplexe

Aufgaben

können

einfach


komponiert

werden

Gut
für

iterative tasks
geeignet

Powershell

Commands
haben

die Syntax:
Verb


Substantiv

(
Aktion



Ziel
)

IIS7 über Managed code verwalten

Zugriff auf applicationHost.config und
web.config

Anlegen von neuen Sites, Dirs, Apps,
AppPools

Recyclen von AppPools

Gegenwärtig ausgeführte Requests
anzeigen

{
administration
}
Remote Administration

appcmd.exe

powershell

using
Microsoft.Web.Administration
;

ISAPI Filter Notifications

url

map

authe

req

log

end net session

Pre proc headers

determine handler

logging

custom errors

compression

authentication

iiscore

handlers

aspnet_isapi.dll

IHttpModule

Events

IHttpHandlers



Monotolithischer

Ansatz
:



Duplizierung

von
Features
zwischen


IIS und
ASP.net



Feature
sind

abhängig

von
ihrer

Position in
der

Pipeline.


ASP.NET
Funktionalität

gilt
nicht

für

alle

anderen

Inhaltstypen

(
z.B
.
statische

Requests)

w3wp.exe

http.sys

cgi

w3svc

static
file

isapi

ext

PageHandler

trace.axd

end
req

update cache

rel

req

state

url

map

begin
req

authe

req

autho

req

cache

handler map

handler exec

http.sys

w3svc

end

logging

update cache

release state

execute handler

pre execute handler

acquire state

map handler

resolve cache

authorize

authenticate

begin

Native Module

IHttpModule

basic auth

digest auth

windows auth

url

autho

role mgr

forms auth

Other native
modules

cgi

static
file

isapi

ext

*.aspx

trace.axd

Integrated pipeline

Native

or Managed
Handlers


Eine

Request
pipeline.



Alle

Funktionen

werden

durch

in
sich

geschlossene

Module
abgebildet
.


Module
können

auf
native
-

oder

managed
-
Code
basieren
.



Alle

Funktionen

können

somit

auf
alle

Anfragen

ausgeführt

werden
.

Http Protocol Support

ValidationRangeModule

TraceVerbModule

OptionsVerbModule

ProtocolSupportModule

Logging and
Diagnostics

HttpLoggingModule

CustomLoggingModule

Configuration and Metadata Caches

TokenCacheModule

UriCacheModule

SiteCacheModule

FileCacheModule

Core Web Server

DirectoryListingModule

CustomErrorModule

DynamicCompressionModule

StaticCompressionModule

StaticFileModule

DefaultDocumentModule

HttpCacheModule

RequestMonitorModule

TracingModule

AuthN/AuthZ

BasicAuthModule

DigestAuthModule

WindowsAuthModule

CertificateAuthModule

AnonymousAuthModule

AccessCheckModule

UrlAuthorizationModule

Extensibility

ISAPIModule

ISAPIFilterModule

CGIModule

ServerSideIncludeModule

ManagedEngineModule

Publishing

DavModule

RequestForwarderModule

HttpRedirectionModule

RequestFilteringModule

{
architektur
}
Modul

Verwaltung

Funktionalität

-
> Module

Keine

w3core.dll

Freies

Zuschalten

und
Entfernen

aller

Module.

Speicherbedarf

und
Angriffsfläche

konfigurierbar
.

Anpassen

der

Site auf die
Anforderungen
.


Eine

Request
-
Pipeline (integrated mode):

Vereinheitlicht

ASP.NET und IIS Events

Aufgaben

können

auf
alle

Inhaltstypen

angewendet

werden
.

Keine

Duplizierung

von Events


IUSR_%machine
%

IUSR

IIS_WPG

IISUsers

IIS6

IIS7

Anonymer User

Application

Pool
Gruppe

Builtin
, nicht lokalisierte Accounts

Keine Probleme mit Password
expiration

Xcopy

| klonen möglich (
Konfig
, Ownership
& NTFS Rechte)




IIS6

IIS7

ACLs

Web Permissions

IP Restrictions

+=
URL
basierend

Authorisierung

URLAuthorizationModule

Auf Basis “
users
”, “
roles
” und “
verbs


Beispiel (
Web.config
):

<
system.webServer
>


<
security
>


<
authorization
>


<
clear

/>


<
add

accessType="
Allow
"
users
="
bfrank
" />


<
add

accessType="
Deny
"
users
="
test
" />


</
authorization
>


</
security
>

</
system.webServer
>



IIS6

IIS7

UrlScan

(ISAPI)*

Request Filter
(
Builtin
)

Filter

*) zusätzliche zu installierende Komponente

RequestFiltering
Module

(modrqflt.dll)

Regeln

basieren

z.B
. auf :

URL, extensions (.exe), verbs, URL
-
Sequenzen
, Max Content,
Max Query String, High bit chars,...

X
-
copy
Konfiguration

(
web.config
)

User: 404 „
file

not
found


Log: Substatus

z.B

404.10 „REQUEST_HEADER_TOO_LONG

“)

w3core.dll

Features
nur

konfigurierbar

Einzeln installier
-
,
konfigurierbar

(Authbas.dll, Authcert.dll,
Authsspi.dll,…)

Für

alle

Anfragen

ISAPI

(
z.B
.
eigene

Authentifizierung
)

+= ASP.net http
Modul

IIS6

IIS7

Erweiterbarkeit

Modularität

Komplex,
unterschiedliche
Ansätze für
ASP.net, ASP, u.a.

Vereinheitlicht.

Application

Pool
Identity

Sandboxing

(ASP.net,
PHP, ASP,…)

Impersonate

Anonymous
User
-
>
Account



Server Management

.NET

WMI

Configuration

.NET

C++

Runtime State &

Control (RSCA)

C++

Core Server Module

.NET

C++

GUI Extension

.NET

Configuration Files

XML Schema

Public API

IIS7


Builtin
-
Modules
basieren

darauf

Erweiterung

der

ASP.NET API

Native
-
Code API
-
Erweiterungen

Reichhaltiger

und
einfacher

als

ISAPI.

Übereinstimmendes

Objektmodell

mit

ASP.NET
APIs.


{
erweiterbarkeit
}
ASP.net Http Module

IIS Hangs

IIS
stürzt

ab

100% CPU

Memory Leaks

Request
braucht

zulange

Request
kommt

mit

Fehler

zurück





{
troubleshooting
}
Workerprozess
-
Status

Event
-
Tracing

Statusinformationen von Websites,
AppPools
, w3wp‘s und
AppDomains

Gegenwärtig ausgeführte Anfragen

„Request
-
Flugschreiber“

Gemeinsames
Trace
-
Log (IIS / ASP.net)

Automatisches Überwachen

Zugriff auf
Tracing

API aus eigenen
Komponenten


Built
-
in support
für

FastCGI

Applikationen

Internet standard,
für

dynamische

Sprachen

(CGI)
z.B
. PHP, Ruby, PERL

Wiederverwendbare

CGI
Prozesse

für

mehrere

Anfragen

Optimiert

auf
Leistung

und
Zuverlässigkeit
.

Bis

zu

25x
schneller

als

Standard CGI


Last
-

und
Zuverlässigkeits
-
Tests auf Basis


PHP 5.2.1, PHP 4.x

Built
-
in caching
für

dynamischen

Antworten

Kernel & User mode caching

Kernel
ist

schneller



(!
Authentifizierung
)

UI
Unterstützung

für

Caching
Richtlinien

varyByQueryString
,
varyByHeaders

CacheUntilChange
,
CacheForTime

Period


Fiddlertool

(local http monitoring tool)

IIS Website
www.iis.net



©
2007 Microsoft
Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademar
ks
and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the
dat
e of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accu
rac
y of any information provided after the date of this presentation.

MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.