Plik dziennika Apache X przekazany do manipulacji CSV

0

Loguję przekierowane za pomocą %{X-FORWARDED-FOR}iformatera. Są jednak chwile, gdy nagłówek X-Forwarded-For otrzymuje CSV (na podstawie konfiguracji klienta):

X-Forwarded-For: 66.66.66.66, 123.123.123.123

Który pojawia się w pliku dziennika jako powyższe adresy IP CSV.

Czy jest jakiś sposób na skonfigurowanie Apache, aby rejestrował tylko lewy adres IP? To jedyny, na którym mi zależy.

rforte
źródło

Odpowiedzi:

1

Tak. Możesz to zrobić za pomocą wyrażenia regularnego, aby wyodrębnić adres IP najbardziej w lewo:

SetEnvIf X-Forwarded-For "^(\d{1,3}+\.\d{1,3}+\.\d{1,3}+\.\d{1,3}+).*" XFFCLIENTIP=$1

Zwróć uwagę na użycie $ 1 do ustawienia zmiennej środowiskowej XFFCLIENTIP do przechowywania zawartości pierwszej grupy w wyrażeniu regularnym (w nawiasach). Następnie możesz zdefiniować format dziennika, który korzysta ze zmiennej: ten przykład jest tym, którego używamy wewnętrznie w nearmap.com , więc rejestruje dodatkowe informacje, ale pożądany bit to % {XFFCLIENTIP} e na początku. Zwróć uwagę na env = XFFCLIENTIP na końcu wiersza, co oznacza, że ​​ten format jest używany tylko wtedy, gdy ustawiona jest zmienna środowiskowa.

CustomLog /var/log/apache2/access.log "%{XFFCLIENTIP}e \"%{session}C\" \"%{nearmapuid}C\" %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" env=XFFCLIENTIP
Ben Last
źródło