# 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 - [Go](https://golang.org/dl/) (for local builds) - [Docker](https://www.docker.com/get-started) and [Docker Compose](https://docs.docker.com/compose/) ### Running Locally 1. Clone the repository: ```sh git clone https://github.com/yourusername/real-ip-request-printer.git cd real-ip-request-printer ``` 2. Build and run the Go application: ```sh 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: ```sh 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: ```sh 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](LICENSE.md).