Skip to content

Instantly share code, notes, and snippets.

@jozko
Last active February 26, 2018 11:07
Show Gist options
  • Save jozko/8ffc801f6da5a33b994a329502713d05 to your computer and use it in GitHub Desktop.
Save jozko/8ffc801f6da5a33b994a329502713d05 to your computer and use it in GitHub Desktop.
Simple Python service to inspect request headers and X-Forwarded-For contents

app.py

from flask import Flask
from flask import request
from flask_json import FlaskJSON, json_response


app = Flask(__name__)
FlaskJSON(app)


@app.route("/")
def hello():
    return json_response(200, headers=dict([ i for i in request.headers.items() ]))

@app.route("/forwardedfor")
def forwardedfor():
    try:
        return json_response(200, addresses="{}" .format(request.headers['X-Forwarded-For']))
    except KeyError:
        return json_response(200, error="No X-Forwarded-For header found")

requirements.txt

Flask==0.12.2
flask_json

Dockerfile

FROM python:3-alpine

WORKDIR /usr/src/app

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

COPY app.py /usr/src/app

ENV FLASK_APP app.py
CMD ["flask", "run", "--host=0.0.0.0"]

Run

docker build -t $imagetag .
docker run --rm -d -p5000:5000 $imagetag

Then point LB to it or have it proxied by Nginx/some other reverse proxy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment