Giter Club home page Giter Club logo

nginx-basic-auth-proxy's Introduction

Docker image of Nginx Proxy with Basic Auth

Docker Repository on Quay

Simple HTTP Proxy with Basic Authentication

       w/ user:pass   +------------------------+      +-------------+
User ---------------> | nginx-basic-auth-proxy | ---> | HTTP Server |
                      +------------------------+      +-------------+

Run

$ docker run \
    --rm \
    --name nginx-basic-auth-proxy \
    -p 8080:80 \
    -p 8090:8090 \
    -e BASIC_AUTH_USERNAME=username \
    -e BASIC_AUTH_PASSWORD=password \
    -e PROXY_PASS=https://www.google.com \
    -e SERVER_NAME=proxy.dtan4.net \
    -e PORT=80 \
    quay.io/dtan4/nginx-basic-auth-proxy

Access to http://localhost:8080 , then browser asks you username and password.

You can also try complete HTTP-proxy example using Docker Compose. hello-world web application cannot be accessed without authentication.

$ docker-compose up
# http://localhost:8080/
# - Username: username
# - Password: password

Endpoint for monitoring

:8090/nginx_status returns the metrics of Nginx.

$ curl localhost:8090/nginx_status
Active connections: 1
server accepts handled requests
 8 8 8
Reading: 0 Writing: 1 Waiting: 0

Environment variables

Required

Key Description
BASIC_AUTH_USERNAME Basic auth username
BASIC_AUTH_PASSWORD Basic auth password
PROXY_PASS Proxy destination URL

Optional

Key Description Default
SERVER_NAME Value for server_name directive example.com
PORT Value for listen directive 80
CLIENT_MAX_BODY_SIZE Value for client_max_body_size directive 1m
PROXY_READ_TIMEOUT Value for proxy_read_timeout directive 60s
WORKER_PROCESSES Value for worker_processes directive auto

Author

Daisuke Fujita (@dtan4)

License

MIT License

nginx-basic-auth-proxy's People

Contributors

dtan4 avatar koudaiii avatar unblee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nginx-basic-auth-proxy's Issues

Chunked encoding - can't attach docker

Hello!
This proxy works really great and allows me to protect Docker API with basic auth.
However, when I need to attach to the Docker container, the response from Nginx has header "Transfer-Encoding: chunked" and so .NET Docker client (not sure about other clients) cannot establish connection as this is not a raw stream connection.

It's easy to test with curl:

curl -i -X POST http://LOGIN:PASS@URL/containers/{CONTAINERID}/attach

If I connect directly to the Docker API the response headers are:

Content-Type: application/vnd.docker.raw-stream

But with Nginx proxy the response headers are:

Content-Type: application/vnd.docker.raw-stream
Transfer-Encoding: chunked
Connection: keep-alive

Regards!

proxy healthprobes without auth

hey,

can we expose a couple of paths through the nginx config that should not go through the basic auth?
I know we have the nginx_status to wire up healthprobes with, but we would like to actually monitor the application behind it. So we would love to just let the /healthz go through to the PROXY_PASS and use that as the probe.

Any pointers on how this can be done easily? Happy to contribute and do the changes myself :)

Cheers,
Thomas

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.