2016-04-01 3 views
1

Ich habe Nginx vor einer Spring Boot 1.3.3-Anwendung mit aktiviertem Tomcat-Zugriffsprotokoll, aber die Protokollierung schreibt immer die Proxy-IP-Adresse (127.0.0.1) anstelle der realen Client-IP.Wie protokolliere ich die echte Client-IP auf dem eingebetteten Tomcat-Zugriffsprotokoll der Spring Boot-Anwendung mit Nginx als Reverse Proxy?

  1. Wird der X-Real-IP-Header verwendet, um die echte Client-IP zu erhalten?
  2. Wird diese Kopfzeile von Tomcat verwendet, um die IP-Adresse in das Zugriffsprotokoll zu schreiben?

Ich habe diese Konfiguration:

application.properties

server.use-forward-headers=true 
server.tomcat.internal-proxies=127\\.0\\.0\\.1 
server.tomcat.accesslog.enabled=true 

Nginx Konfiguration:

location/{ 
    proxy_pass http://127.0.0.1:8091; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Proto https; 
    proxy_set_header X-Forwarded-Port 443; 
    proxy_set_header Host $host; 
} 
+0

keine allgemein die 'X-Forwared-For' ein. Verwenden Sie auch einen externen Client oder rufen Sie ihn vom selben Server an? –

Antwort

3

Der eigentliche Client-IP in $proxy_add_x_forwarded_for Variable verfügbar ist d X-Forwarded-For Header. Es wird "," getrennte Einträge haben. Der allererste Wert ist die echte Client-IP.

die echte Client-IP in Tomcat-Zugriffsprotokolle Um sich einzuloggen, um das Muster Wert im AccessLog Ventil nach ändern:

%{X-Forwarded-For}i %l %u %t "%r" %s %b 
+0

Danke @nidhi! Es funktionierte! Jetzt habe ich die Client-IP. Ich habe in der Dokumentation gefunden, dass dieser% {...} ich den Wert von Kopfzeilen bekomme. Vielen Dank –

Verwandte Themen