IIS-Protokolldateien und Load Balancer?

8

Wir hosten unsere ASP.NET-Anwendungen auf zwei Webservern (Server 2003, IIS 6), die sich hinter einem Hardware-Lastenausgleich befinden. Wenn ich auf die IIS-Protokolle schaue, ist der c-ip-Wert in den IIS (v6) -Protokollen IMMER die IP-Adresse des Load-Balancers. Ich bemerkte, dass in den HTTP-Headern ein X-Forwarded-For-Header vorhanden ist, der die anfragende IP-Adresse zu haben scheint. Kann ich etwas tun, damit IIS diesen Header-Wert in den Protokollen protokolliert?

    
twlichty 04.05.2009, 18:43
quelle

5 Antworten

3

Wenn Sie einen Proxy durchgehen, wird das x-forwarded-for am häufigsten von verwendet Lastenausgleicher. Du kannst wahrscheinlich eine Ссылка schreiben, die das um dich selbst herum tauschen wird; oder IIS Tracer kann mit den Standarddateien spielen; einschließlich des Austausches der Felder c-ip und x-forward.

Wenn dies nicht für die Verwendung eines Berichterstattungswerkzeugs eines Dritten getan wird; Vielleicht möchten Sie Ihre Protokolle in SQL Server ablegen, wo Sie die Spalten jederzeit ändern können.

Persönlich gehe ich für das Letztere, damit ich Gesamtdaten für alle Server erhalten kann; Ich dump in verschiedene Tabellen in der gleichen db und melden Sie dann von allen Webservern in der Farm. Ich finde es auch einfacher als 500 MB oder mehr Protokolldateien überall zu verwalten.

    
u07ch 04.05.2009, 18:57
quelle
5

Ich weiß nicht, wie lange es schon ist, aber die Erweiterte Protokollerweiterung für IIS 7 und höher (unter Windows Server 2008 und höher) bietet Benutzerdefinierte Protokollierungsfunktion , mit der (fast) beliebige Informationen in IIS-Protokolldateien gesammelt werden können, einschließlich benutzerdefinierter HTTP-Anforderungs- (und Antwort-) Header wie X-Forwarded-For .

Ich habe das gerade heute auf unserem Server eingerichtet und es funktioniert wunderbar.

Beachten Sie Folgendes: Anstatt die Standardprotokolldefinition unter dem Namen % COMPUTERNAME% -Server zu bearbeiten, erstellen Sie einfach eine neue auf Ihrer Site oder global auf Ihrem Server, um die Ausnahme zu vermeiden. " Die Anfrage wird nicht unterstützt. " wenn Sie versuchen, Ihre Änderungen zu speichern. Dies geschieht, wenn Sie versuchen, diese Standarddefinition auf Site-Ebene zu bearbeiten (dank diesem Thread für die Antwort).

    
Oliver 10.06.2014 12:36
quelle
2

F5 networks bietet einen ISAPI-Filter auf devcentral.f5.com, der xforwarded-for verwendet und in den Protokollen verwendet.

Darüber hinaus gibt es nicht viel, was Sie tun können - so funktioniert TCP. :)

    
JohnW 04.05.2009 18:57
quelle
2

Das ist eine ziemlich alte Frage, aber ich würde hinzufügen, dass IIS 8.5 die Fähigkeit hat zu schreiben benutzerdefinierte HTTP-Header zu den IIS-Protokollen. Dies ist eine viel bessere Option als die Installation eines ISAPI-Filters oder HTTP-Moduls.

Dieser Schritt zeigt, wie Sie dies über den IIS-Manager einrichten: Ссылка

Diese andere SO-Frage zeigt, wie man es mit PowerShell macht: Hinzufügen benutzerdefinierter IIS 8.5-Protokollierungsfelder mit Powershell

    
Rob Potter 16.04.2014 10:44
quelle
0

Mit der erweiterten IIS 8.5-Protokollierung können Sie den Header X-FORWAREDED-FOR problemlos protokollieren.

IIS 8.5 Erweiterte Protokollierung

    
Doolali 27.11.2015 09:31
quelle