Skip to content

Sentry captures incorrect IP address #16768

Closed
@amplitudesxd

Description

@amplitudesxd

Is there an existing issue for this?

How do you use Sentry?

Self-hosted/on-premise

Which SDK are you using?

@sentry/node

SDK Version

9.30.0

Framework Version

No response

Link to Sentry event

No response

Reproduction Example/SDK Setup

No response

Steps to Reproduce

  1. Deploy application behind multiple reverse proxies (e.g., CDN → Load Balancer → Application)
  2. Configure proxies to forward client IP via X-Forwarded-For header
  3. Make requests through the proxy chain
  4. Observe IP address captured in Sentry user context

Expected Result

Sentry should extract and use the original client IP address from the X-Forwarded-For header.

For example, with header: X-Forwarded-For: [user's real ip], 172.70.82.11
The user context should show the original client IP from the first position in the header.

Actual Result

Sentry captures the direct connection IP instead of parsing the forwarded headers. In this case, it shows 10.244.5.65 (internal proxy IP) in the user context.

The trace data correctly captures the client IP in http.client_ip, but the user context shows the proxy IP.

Trace Data

{
  "http.client_ip": "[user's real ip]",
  "http.flavor": "1.1", 
  "http.host": "example.com",
  "http.request_content_length_uncompressed": 59,
  "http.request_method": "POST",
  "http.response.status_code": 200,
  "http.route": "/api",
  "http.scheme": "http",
  "http.status_code": 200,
  "http.status_text": "OK",
  "http.target": "/api",
  "http.url": "http://example.com/api",
  "http.user_agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36",
  "net.host.ip": "10.244.7.162",
  "net.host.name": "example.com", 
  "net.host.port": 3000,
  "net.peer.ip": "10.244.5.65",
  "net.peer.port": 35180,
  "net.transport": "ip_tcp",
  "otel.kind": "SERVER",
  "sentry.op": "http.server",
  "sentry.origin": "auto.http.otel.http",
  "sentry.source": "route",
  "url": "http://example.com/api"
}

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions