Skip to content

Instantly share code, notes, and snippets.

@danibram
Last active May 5, 2021 07:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danibram/681bddef856d7a15372244e5ca60eebe to your computer and use it in GitHub Desktop.
Save danibram/681bddef856d7a15372244e5ca60eebe to your computer and use it in GitHub Desktop.
Nginx Automated with @jwilder/nginx-proxy

Base Scafold project for a docker-compose with automated nginx, it has only 2 services api and pwa Folder Structure:

[proxy folder]
├── conf.d            // Folder
├── my_proxy.conf     // general nginx conf
├── nginx.tmpl        // nginx template
└── vhost.d
  └── awesome-domain.com  // specific nginx config for that domain

awesome-domain.com file example to perform non-www to www redirection:

  if ($host ~ ^(?!www\.)(?<awesome-domain>.+)$) {
    return  301 $scheme://www.$awesome-domain$request_uri;
  }
version: "3"
services:
proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
pwa:
build: ./pwa
environment:
- VIRTUAL_HOST=xproject.local
ports:
- 3002:3002
api:
build: ./api
environment:
- VIRTUAL_HOST=api.xproject.local
ports:
- 3001:3001
version: "3"
services:
nginx:
image: nginx
container_name: nginx
ports:
- '80:80'
- '443:443'
labels:
com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: 'true'
logging:
options:
max-size: 10m
max-file: '1'
volumes:
- ./proxy/conf.d:/etc/nginx/conf.d
- ./proxy/vhost.d:/etc/nginx/vhost.d
- ./proxy/html:/usr/share/nginx/html
- ./proxy/certs:/etc/nginx/certs:ro
- ./proxy/my_proxy.conf:/etc/nginx/conf.d/my_proxy.conf:ro
- ./proxy/dhparam.pem:/etc/nginx/dhparam/dhparam.pem:ro
restart: always
nginx-gen:
image: jwilder/docker-gen
labels:
com.github.jrcs.letsencrypt_nginx_proxy_companion.docker_gen: 'true'
container_name: nginx-gen
command: -notify-sighup nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
depends_on:
- nginx
volumes_from:
- nginx
volumes:
- ./proxy/nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro
- /var/run/docker.sock:/tmp/docker.sock:ro
logging:
options:
max-size: 10m
max-file: '1'
restart: always
nginx-ssl:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: nginx-ssl
depends_on:
- nginx
- nginx-gen
volumes_from:
- nginx
volumes:
- ./proxy/certs:/etc/nginx/certs
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- ACME_CA_URI
- 'NGINX_DOCKER_GEN_CONTAINER=nginx-gen'
- 'NGINX_PROXY_CONTAINER=nginx'
- 'DEFAULT_EMAIL=awesome-email'
logging:
options:
max-size: 10m
max-file: '1'
restart: always
pwa:
build: ./pwa
environment:
- VIRTUAL_HOST=www.awesome-domain.com,awesome-domain.com
- VIRTUAL_PORT=3002
- LETSENCRYPT_HOST=www.awesome-domain.com,awesome-domain.com
- LETSENCRYPT_EMAIL=awesome-email
ports:
- 3002:3002
api:
build: ./api
environment:
- VIRTUAL_HOST=api.awesome-domain.com
- VIRTUAL_PORT=3001
- LETSENCRYPT_HOST=api.awesome-domain.com
- LETSENCRYPT_EMAIL=awesome-email
ports:
- 3001:3001
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment