Я использую что-то вроде этого файла docker-compose.yml.
version: '3'
services:
httpd:
image: httpd:alpine
environment:
- VIRTUAL_HOST=example.com,www.example.com
- LETSENCRYPT_HOST=example.com,www.example.com
- LETSENCRYPT_EMAIL=name@example.com
ports:
- '1080:80'
proxy:
container_name: my_proxy
image: jwilder/nginx-proxy:alpine
ports:
- '80:80'
- '443:443'
volumes:
- '/var/run/docker.sock:/tmp/docker.sock:ro'
- './volumes/proxy/letsencrypt:/etc/nginx/certs:ro'
- './volumes/proxy/vhost:/etc/nginx/vhost.d'
- './volumes/proxy/html:/usr/share/nginx/html'
letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
environment:
- NGINX_PROXY_CONTAINER=my_proxy
- DEFAULT_EMAIL=name@example.com
volumes:
- '/var/run/docker.sock:/var/run/docker.sock:ro'
- './volumes/proxy/letsencrypt:/etc/nginx/certs'
- './volumes/proxy/vhost:/etc/nginx/vhost.d'
- './volumes/proxy/html:/usr/share/nginx/html'
У меня есть следующее перенаправление 301 (и два сертификата, один для example.com и один для www.example.com).
Это нормально, но я пытаюсь выполнить 301 перенаправление (только с одним сертификатом для домена www.example.com).
Можно ли сделать это с помощью этих образов докеров?
Вот рабочее решение со следующими новыми docker-compose.yml
файл.
version: '3'
services:
httpd:
image: httpd:alpine
environment:
- VIRTUAL_HOST=www.example.com
- LETSENCRYPT_HOST=example.com,www.example.com
- LETSENCRYPT_EMAIL=name@example.com
ports:
- '1080:80'
proxy:
container_name: my_proxy
image: jwilder/nginx-proxy:alpine
ports:
- '80:80'
- '443:443'
volumes:
- '/var/run/docker.sock:/tmp/docker.sock:ro'
- './volumes/config/proxy/nginx.conf:/etc/nginx/conf.d/example.conf:ro'
- './volumes/proxy/letsencrypt:/etc/nginx/certs:ro'
- './volumes/proxy/vhost:/etc/nginx/vhost.d'
- './volumes/proxy/html:/usr/share/nginx/html'
letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
environment:
- NGINX_PROXY_CONTAINER=my_proxy
- DEFAULT_EMAIL=name@example.com
volumes:
- '/var/run/docker.sock:/var/run/docker.sock:ro'
- './volumes/proxy/letsencrypt:/etc/nginx/certs'
- './volumes/proxy/vhost:/etc/nginx/vhost.d'
- './volumes/proxy/html:/usr/share/nginx/html'
А вот содержание ./volumes/config/proxy/nginx.conf
файл.
server {
server_name example.com;
listen 80 ;
listen [::]:80 ;
listen 443 ssl http2;
listen [::]:443 ssl http2;
return 301 https://www.$host$request_uri;
ssl_certificate /etc/nginx/certs/default.crt;
ssl_certificate_key /etc/nginx/certs/default.key;
}
Я не знаю, можно ли перенаправить https: // пример -> https://www.example.com без использования сертификатов ssl по умолчанию.