docker-nginx-redirect

A very simple container to redirect HTTP traffic to another server, based on nginx

Resources

Configuration

Environment variables

  • SERVER_REDIRECT - server to redirect to, eg. www.example.com
  • SERVER_NAME - optionally define the server name to listen on eg. ~^www.(?<subdomain>.+).example.com
    • useful for capturing variable to use in server_redirect.
  • SERVER_REDIRECT_PATH - optionally define path to redirect all requests eg. /landingpage
    • if not set nginx var $request_uri is used
  • SERVER_REDIRECT_SCHEME - optionally define scheme to redirect to
    • if not set but X-Forwarded-Proto is send as request header with value 'https' this will be used. In all other cases nginx var $scheme is used
  • SERVER_REDIRECT_CODE - optionally define the http status code to use for redirection
    • if not set or not in list of allowed codes 301 is used as default
    • allowed Codes are: 301, 302, 303, 307, 308
  • SERVER_REDIRECT_POST_CODE - optionally define the http code to use for POST redirection
    • useful if client should not change the request method from POST to GET
    • if not set or not in allowed Codes SERVER_REDIRECT_CODE is used
    • so per default all requests will be redirected with the same status code
  • SERVER_REDIRECT_PUT_PATCH_DELETE_CODE - optionally define the http code to use for PUT, PATCH and DELETE redirection
    • useful if client should not change the request method from PUT, PATCH and DELETE to GET
    • if not set or not in allowed Codes SERVER_REDIRECT_CODE is used
    • so per default all requests will be redirected with the same status code
  • SERVER_ACCESS_LOG - optionally define the location where nginx will write its access log
    • if not set /dev/stdout is used
  • SERVER_ERROR_LOG - optionally define the location where nginx will write its error log
    • if not set /dev/stderr is used

See also docker-compose.yml file.

Usage

With docker-compose

docker-compose up -d

With docker

docker run -e SERVER_REDIRECT=www.example.com -p 8888:80 .
docker run -e SERVER_REDIRECT=www.example.com -e SERVER_REDIRECT_PATH=/landingpage -p 8888:80 .
docker run -e SERVER_REDIRECT=www.example.com -e SERVER_REDIRECT_PATH=/landingpage -e SERVER_REDIRECT_SCHEME=https -p 8888:80 .