## Motivation This image was created for use with dogestry. We wanted a caching HTTP proxy between our servers and S3 so that images were only downloaded once from S3. ## Usage The image assumes a config file in the container at: `/nginx.conf` so use the `-v` option to mount one from your host. ``` docker run -p 8000:8000 -v /path/to/nginx.conf:/nginx.conf coopernurse/nginx-s3-proxy ``` If you want to store the cache on the host, bind a path to `/data/cache`: ``` docker run -p 8000:8000 -v /path/to/nginx.conf:/nginx.conf -v /my/path:/data/cache coopernurse/nginx-s3-proxy ``` Feel free to alter the `-p` param if you wish to bind the port differently onto the host. Example nginx.conf file: ``` worker_processes 2; pid /run/nginx.pid; daemon off; events { worker_connections 768; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_names_hash_bucket_size 64; include /usr/local/nginx/conf/mime.types; default_type application/octet-stream; access_log /usr/local/nginx/logs/access.log; error_log /usr/local/nginx/logs/error.log; gzip on; gzip_disable "msie6"; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; proxy_cache_lock on; proxy_cache_lock_timeout 60s; proxy_cache_path /data/cache levels=1:2 keys_zone=s3cache:10m max_size=30g; server { listen 8000; location / { proxy_pass https://your-bucket.s3.amazonaws.com; aws_access_key your-access-key; aws_secret_key your-secret-key; s3_bucket your-bucket; proxy_set_header Authorization $s3_auth_token; proxy_set_header x-amz-date $aws_date; proxy_cache s3cache; proxy_cache_valid 200 302 24h; } } } ``` Things you want to tweak include: * proxy_cache_path * alter max_size as desired * if you want the cache stored external to the container, alter the path * proxy_pass * aws_access_key * aws_secret_key * s3_bucket * proxy_cache_valid - change 24h to your cache duration as desired.