web-dev-qa-db-ja.com

nginx-proxyおよびnginx-proxy-companionを使用したNginx 301リダイレクト

この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イメージを使用してそれを行うことは可能ですか?

1
MB4E

以下は、新しい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 をリダイレクトできるかどうかはわかりません。

0
MB4E