簡體   English   中英

如何使用Nginx作為反向代理在Spring Boot應用程序上的嵌入式Tomcat訪問日志中記錄真實的客戶端IP?

[英]How to log the real client IP on embedded Tomcat access log on Spring Boot application with Nginx as reverse proxy?

我在啟用了Tomcat訪問日志的Spring Boot 1.3.3應用程序前面安裝了Nginx,但是該日志記錄始終寫入代理IP地址(127.0.0.1),而不是實際的客戶端IP。

  1. X-Real-IP標頭是否用於獲取真實的客戶端IP?
  2. Tomcat是否使用此標頭將IP地址寫入訪問日志?

我有這個配置:

application.properties

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

Nginx配置:

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;
}

真實的客戶端IP在$proxy_add_x_forwarded_for變量中可用,即X-Forwarded-For標頭。 它將有“,”分隔的條目。 第一個值是真實的客戶端IP。

要將真實的客戶端IP記錄在Tomcat的訪問日志中,請將AccessLog Valve中的模式值修改為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM