この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
- [email protected]
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
- [email protected]
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用の2つの証明書)。
これは問題ありませんが、次の301リダイレクトを取得しようとしています(ドメインwww.example.comの証明書が1つだけ)。
このDockerイメージを使用してそれを行うことは可能ですか?
以下は、新しいdocker-compose.yml
ファイルを使用した実用的なソリューションです。
version: '3'
services:
httpd:
image: httpd:Alpine
environment:
- VIRTUAL_Host=www.example.com
- LETSENCRYPT_Host=example.com,www.example.com
- [email protected]
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
- [email protected]
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;
}
このデフォルトのSSL証明書を使用せずに https:// example -> https://www.example.com をリダイレクトできるかどうかはわかりません。