Prints IP of the request as received from the client or reverse proxy & all the headers.
Go to file
2024-11-08 17:23:44 +03:00
.gitignore initial 2024-11-08 17:23:44 +03:00
compose.yaml initial 2024-11-08 17:23:44 +03:00
Dockerfile initial 2024-11-08 17:23:44 +03:00
go.mod initial 2024-11-08 17:23:44 +03:00
LICENSE.md initial 2024-11-08 17:23:44 +03:00
main.go initial 2024-11-08 17:23:44 +03:00
README.md initial 2024-11-08 17:23:44 +03:00

real-ip-request-printer

Overview

real-ip-request-printer is a simple Go service that listens for HTTP GET requests on the root endpoint (/) and responds with:

  • The request IP address as seen by the application (considering headers like X-Real-Ip and X-Forwarded-For).
  • All incoming HTTP headers in a key: value format.

This project is designed to help inspect and debug HTTP request information, particularly for applications deployed behind proxies or load balancers.

How to Run

Prerequisites

Running Locally

  1. Clone the repository:
git clone https://github.com/yourusername/real-ip-request-printer.git
cd real-ip-request-printer
  1. Build and run the Go application:
go mod tidy
go run main.go

The service will start on http://localhost:8080 by default. You can change the listening address by setting the LISTEN environment variable:

LISTEN=127.0.0.1:9090 go run main.go

Running with Docker

Change the hostname in the compose.yaml to your domain. Build and run the Docker container using Compose:

docker compose up

Access the service via the configured domain.

Configuration

  • The listening address of the Go service can be customized using the LISTEN environment variable.
  • For containerized execution use Traefik for routing.

Project Structure

  • main.go: The main Go application.
  • Dockerfile: Configuration for building the Docker image.
  • compose.yaml: Docker Compose configuration to run the service.
  • README.md: This documentation file.
  • LICENSE.md: License file.
  • .gitignore: Standard git ignore settings for Go projects.

License

This project is open-source and available under the MIT License.