#ip-address #client-ip #x-forwarded-for #extractor #real-ip #proxy #actix #ipv6 #remote-ip

actix-remote-ip

Tiny extractor to get real client IP address, parsing X-Forwarded-For header

2 releases

0.1.0 Apr 29, 2023

#1179 in HTTP server

Download history 436/week @ 2025-07-11 334/week @ 2025-07-18 251/week @ 2025-07-25 257/week @ 2025-08-01 282/week @ 2025-08-08 276/week @ 2025-08-15 301/week @ 2025-08-22 328/week @ 2025-08-29 326/week @ 2025-09-05 339/week @ 2025-09-12 221/week @ 2025-09-19 315/week @ 2025-09-26 310/week @ 2025-10-03 295/week @ 2025-10-10 329/week @ 2025-10-17 272/week @ 2025-10-24

1,244 downloads per month

GPL-2.0-or-later

10KB
187 lines

Actix Remote IP extractor

Build Status Crate

Tiny extractor of remote user IP address, that handles reverse proxy.

The X-Forwarded-For header is automatically parsed when the request comes from a defined proxy, to determine the real remote client IP Address.

Note : regarding IPv6 addresses, the local part of the address is discarded. For example, the IPv6 client 2001:0db8:85a3:0000:0000:8a2e:0370:7334 will be returned as 2001:0db8:85a3:0000:0000:0000:0000:0000

Configuration

Configure it when you configure your Actix server:

HttpServer::new(move || {
    App::new()
        .app_data(web::Data::new(RemoteIPConfig {
            proxy: Some("IP".to_string())
        }))
    // ...
})

Usage

In your route, add a RemoteIP parameter:

#[get("/")]
async fn home(remote_ip: RemoteIP) -> HttpResponse {
    let ip: IpAddr = remote_ip.0;
    // ...
}

Dependencies

~15–29MB
~457K SLoC