在server.xml
,在,Connector
我指定proxyPort
为80
。
这是 xinetd 服务:
service http
{
socket_type = stream
protocol = tcp
user = tomcat6
wait = no
bind = 0.0.0.0
port = 80
redirect = 127.0.0.1 8080
disable = no
flags = REUSE
log_type = FILE /var/log/xinetd_http_access.log
log_on_success -= PID HOST DURATION EXIT
per_source = UNLIMITED
instances = UNLIMITED
}
不过,在 Tomcat 的访问日志中我看到如下行:
127.0.0.1 - - [17/Aug/2012:00:23:23 +0300] "GET / HTTP/1.1" 200 1975
127.0.0.1 - - [17/Aug/2012:00:23:23 +0300] "GET /_static/css/global.css HTTP/1.1" 304 -
有任何想法吗?
答案1
xinetd 能否传递转发HTTP 标头?
如果 tomcat 位于通过 X-FORWARDED-FOR 的反向代理(例如 nginx)之后,即:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
然后您可以在 tomcat server.xml 中设置 AccessLogValve:
pattern="%{X-Forwarded-For}i %l %u %t %r %s %b %{User-Agent}i %{Referer}i"
您将在访问日志中获得客户端的原始 IP 地址。
干杯
答案2
不,什么也做不了。您无法使用 xinetd 执行此操作。它似乎对我有用,但后来我意识到日志中的大多数 IP 地址仍然是 127.0.0.1。
我最终设法让 Tomcat 以(大多数)受限用户身份运行剛果使用 --user 选项。使用 iptables 也可以。