@EVOSandru6

Как настроить https nginx docker контейнера?

Добрый день,

Купил хостинг, прописал ns записи, добавил A запись. Для проверки корректной привязки домена установил nginx, проверил работу на 80 порту для условно domen.ru, Hello Nginx открылся.

Путаюсь запуститься с докером.

1) Рабочий вариант конфига: когда работает обращение только с 80 порта (http://domen.ru):

server
{
    listen 80;
    server_name www.domen.ru domen.ru;

    index index.php index.html;
    root /var/www/public;

    location / {
        try_files $uri /index.php?$args;
    }

    location /docs {
        try_files $uri $uri/;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php-fpm:9000; # так называется контейнер с php-fpm
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}


2) Вариант с проблемой с https:

server {
    listen 80;
    server_name www.domen.ru domen.ru;
    return 301 https://$host$request_uri;
}

server {
    listen 443;
    server_name www.domen.ru domen.ru;
    charset utf-8;

    index index.php index.html;
    root /var/www/public;
    location / {
        try_files $uri /index.php?$args;
    }
    location /docs {
        try_files $uri $uri/;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php-fpm:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }

    ssl on;
    ssl_certificate /etc/nginx/ssl/fullchain.pem; # определено в volume
    ssl_certificate_key /etc/nginx/ssl/privkey.pem; # определено в volume
}


При обращении на https://domen.ru:

Выводится сообщение:

Не удается получить доступ к сайту Сайт domen.ru не позволяет установить соединение.
Попробуйте сделать следующее:

Проверьте подключение к Интернету.
Проверьте настройки прокси-сервера и брандмауэра.
ERR_CONNECTION_REFUSED


Серты сгенерированы посредством certbot и на хостинге прокинуты в volume

На что чтоит обратить внимание, чтобы решить проблему?

docker-compose.yml

version: '3.7'
services:
  nginx:
    container_name: nginx
    build:
      context: ./
      dockerfile: docker/containers/nginx/${ENV}/Dockerfile
    volumes:
      - ${APP_PATH_HOST}:/var/www
      - ./volumes/ssl:/etc/nginx/ssl
      - ./volumes/log/nginx/:/var/log/nginx/
    ports:
      - 443:443
      - 80:80
    extra_hosts:
      - domen.ru:{ip_address}
  php-fpm:
    container_name: php-fpm
    build: ${CONTAINERS_PATH}/php-fpm
    volumes:
      - ${APP_PATH_HOST}:/var/www
    environment:
      - REDIS_PORT=6379
      - REDIS_HOST=redis
      - DB_CONNECTION=pgsql
      - DB_PORT=5432
      - DB_HOST=pgsql
  php-cli:
    container_name: php-cli
    build: ${CONTAINERS_PATH}/php-cli
    volumes:
      - ${APP_PATH_HOST}:/var/www
    environment:
      - REDIS_PORT=6379
      - REDIS_HOST=redis
      - DB_CONNECTION=pgsql
      - DB_PORT=5432
      - DB_HOST=pgsql
    tty: true
  pgsql:
    container_name: pgsql
    image: postgres:${POSTGRES_VERSION}
    environment:
      - POSTGRES_USER=${DB_USER}
      - POSTGRES_PASSWORD=${DB_PASSWORD}
      - POSTGRES_DATABASE=${DB_NAME}
    ports:
      - 54321:5432
    volumes:
      - ${STORAGE_PATH}/postgres:/var/lib/postgresql/data
  node:
    container_name: node
    image: node:${NODE_VERSION}
    volumes:
        - ${APP_PATH_HOST}:/var/www
    working_dir: /var/www
    tty: true


./docker/containers/nginx/prod/Dockerfile

FROM nginx:1.10

ADD ./docker/nginx/prod.conf /etc/nginx/conf.d/default.conf
WORKDIR /var/www


В папке ./volumes/ssl сертификаты точно есть.

На хостинге выполнил следующие комманды:

$ nmap -sT -p80,443 185.228.233.68

Starting Nmap 7.60 ( https://nmap.org ) at 2019-11-10 14:37 MSK
Nmap scan report for www.domen.ru (185.228.233.68)
Host is up (0.00052s latency).

PORT STATE SERVICE
80/tcp closed http
443/tcp closed https

Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds

$ lsof -Pni | grep ":80|:443"

Пустой вывод

$ sudo lsof -i -P -n | grep LISTEN

systemd-r 643 systemd-resolve 13u IPv4 15063 0t0 TCP 127.0.0.53:53 (LISTEN)
sshd 871 root 3u IPv4 17768 0t0 TCP *:22 (LISTEN)
sshd 871 root 4u IPv6 17770 0t0 TCP *:22 (LISTEN)
docker-pr 22065 root 4u IPv6 275479 0t0 TCP *:54321 (LISTEN)
  • Вопрос задан
  • 2518 просмотров
Пригласить эксперта
Ответы на вопрос 1
@q2digger
никого не трогаю, починяю примус
Покажите вывод команды после запуска
docker-compose ps

Так же проверьте, что в логах контейнера nginx , если они штатно для докера выведены в stderr, то
docker-compose logs
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы