Назад | Перейти на главную страницу

Перенаправление Nginx 301 с помощью nginx-proxy и nginx-proxy-companion

Я использую что-то вроде этого файла 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 по умолчанию.