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

Не удается включить SSL в контейнере nginx для докеров

Я новичок в докере и пытаюсь создать образ на основе Alpine, чтобы заботиться о моих веб-сайтах с подключениями HTTPS. В настоящее время я нахожусь на этапе, чтобы заставить его работать из контейнера, поэтому я еще не закончил с моим Dockerfile my Dockerfile:

FROM alpine


RUN apk update \
        && apk upgrade \
        && apk add nginx php7 php7-fpm php7-opcache php7-gd php7-mysqli php7-zlib php7-curl \
        && mkdir /run/nginx
EXPOSE 80

Оттуда я запускаю свой контейнер:

docker run -ti -p 80:80 -p 443:442 -v /home/docker/web/conf:/etc/nginx/conf.d/ -v /home/docker/web/www:/var/www/localhost/htdocs test

Затем я устанавливаю certbot-nginx и запускаю его для генерации сертификата, который копирую в свой /var/www/localhost/htdocs/example.fr/, чтобы получить к нему доступ извне контейнера. Наконец я запускаю php-fpm7 и nginx.

Моя конфигурация nginx:

server {
        server_name example.fr;
        root /var/www/localhost/htdocs/example.fr;
        index index.html index.htm index.php;
        listen [::]:443 ssl;
        server_tokens off;
        # configure php
        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                include fastcgi.conf;
                index index.html index.htm index.php;
        }

        location ~* \.pem {
                deny all;
        }

        ssl_certificate /var/www/localhost/htdocs/example.fr/fullchain.pem; 
        ssl_certificate_key /var/www/localhost/htdocs/example.fr/privkey.pem; # managed by Certbot

}

server {
    if ($host = example.fr) {
        return 301 https://$host$request_uri;
    }
       # managed by Certbot
       server_name example.fr;
       listen 80;
       listen [::]:80;
       #return 404;
}

Я, наверное, упускаю что-то простое, но я застрял на неделе. Спасибо !

Вместо того, чтобы заново изобретать колесо, возможно, взгляните на некоторые типовые проекты, такие как:

https://github.com/wmnnd/nginx-certbot

Это покрывает ваши потребности:

  • nginx
  • certbot