Skip to content

http(s) proxy for caching and loadbalancing with web interface based on varnish and nginx

License

Notifications You must be signed in to change notification settings

enhavo/enhavo-proxy

Repository files navigation

alt text

Enhavo Proxy

The goal of enhavo proxy is to create a proxy with focus on load balancing and caching issue, which is easily to configure over cli and a web interface. It supports SSL with own and Let's Encrypt certificates.

Enhavo proxy is made for docker, so it's easy to install on docker hosts.

Please don't use it for production unless we release version 1.0. We can't guarantee backward compatibility and we may have still miss configuration.

Architecture

We use varnish as proxy server. Varnish can't handle ssl request by default, so we use nginx to resolve https request. We use apache only for the web interface, which is based on enhavo. The configuration is stored to a mysql database. If you apply the configuration they will be written to the filesystem and overwrite the configuration files.

alt text

Run Docker

$ docker run -d -e DATABASE_URL='mysql://root:root@mysql:3306/enhavo-proxy' --link 'mysql:mysql' -p '80:80' -p '443:443' -p '8080:8080'  enhavo/enhavo-proxy

Or copy this docker-compose.yml file to your file system and run docker-compose up -d

version: '3'
services:
  proxy:
    container_name: enhavo-proxy
    image: enhavo/enhavo-proxy
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    volumes:
      - '/data/enhavo-proxy/nginx:/etc/nginx'
      - '/data/enhavo-proxy/varnish:/etc/varnish'
      - '/data/enhavo-proxy/ssl:/var/ssl'
    environment:
      DATABASE_URL: mysql://root:root@mysql:3306/enhavo-proxy
  mysql:
    container_name: mysql
    image: mariadb:10.3
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - '/data/enhavo-proxy/mysql:/var/lib/mysql'

Contribution

Feel free to contribute

MIT License

This software is free to use with MIT License