nginx에서 /etc/letsencrypt/options-ssl-ngin.conf 파일을 찾을 수 없습니다.

nginx에서 /etc/letsencrypt/options-ssl-ngin.conf 파일을 찾을 수 없습니다.

nginx, gunincorn, letsencrypt 및 docker가 포함된 Linux 상자(Ubuntu 18.04 실행)를 사용하여 python-django 웹앱을 제공하려고 합니다. 여러 온라인 튜토리얼을 따른 후 이 튜토리얼을 따라 포트 80을 통해 http를 통해 앱을 성공적으로 제공했습니다.http://pawamoy.github.io/2018/02/01/docker-compose-django-postgres-nginx.html.

그러나 현재 포트 443을 통해 https를 통해 배포하는 데 어려움을 겪고 있습니다. 어쩌면 기본적인 도커 개념을 이해하지 못하는 것 같습니다. 실행할 때 발생하는 오류는 sudo docker-compose up다음과 같습니다.

엔진X 오류:

nginx_1 | nginx: [emerg] open() "/etc/letsencrypt/options-ssl-nginx.conf" failed (2: No such file or directory) in /etc/nginx/conf.d/local_ssl.conf:28

docker-compose.yml 파일의 options-ssl-nginx.conf 파일을 볼륨을 통해 연결하지 않았기 때문이라고 생각합니다. 그래도 이것이 맞는지는 모르겠습니다. 내 docker-compose.yml 파일과 nginx.conf 파일의 관련 부분은 다음과 같습니다.

docker-compose.yml:

version: '3'

services:

  # database containers
  database1:
    ...

  # web container
  djangoapp:
    ...

  # reverse proxy container (nginx)
  nginx:
    image: nginx:latest
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./config/nginx/conf_ssl.d/:/etc/nginx/conf.d
      - static:/opt/services/djangoapp/static
      - media:/opt/services/djangoapp/media
      - ~/nginxlogs:/var/log/nginx
      - /etc/letsencrypt
      - /var/www/certbot
/live/maps.critr.org.uk
    networks:
      - nginx_network
    depends_on:
      - djangoapp

  certbot:
    image: certbot/certbot
    restart: unless-stopped
    volumes:
      - /etc/letsencrypt
      - /var/www/certbot
    entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"

networks:
   ...

volumes:
   ...

nginx.conf:

upstream critr_server {
    server djangoapp:8000;
}

# divert all http traffic to https
server {
    listen 80; 
    server_name maps.critr.org.uk;
    return 301 https://maps.critr.org.uk;
}

server {

    listen 443 ssl;

    server_name maps.critr.org.uk;

    ssl_certificate /etc/letsencrypt/live/maps.critr.org.uk/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/maps.critr.org.uk/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers   HIGH:!aNULL:!MD5;


    include         /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam     /etc/letsencrypt/ssl-dhparams.pem;


    location /.well-known {
        root /opt/services/djangoapp/static/;
    }   

    location /static/ {
        alias /opt/services/djangoapp/static/;
    }   

    location /media/ {
        alias /opt/services/djangoapp/media/;
    }   

    location / { 
        proxy_pass https://critr_server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }   
}

docker-compose의 볼륨을 이해하지 못하는 것이 문제라고 생각합니까? 나는 거의 일주일 동안 이 문제를 해결하려고 노력했지만 아무것도 찾지 못했습니다.

답변1

이 파일이 누락된 것 같습니다. /etc/letsencrypt/options-ssl-nginx.conf이는 certbot 설치 프로그램을 사용하는 모든 사이트의 기본 구성입니다. 따라서 이 파일은 일반적으로 시스템을 처음 구성하는 사람이 주로 수동으로 수행하는 인증서 설치(또는 발급 및 설치) 중에 생성됩니다.

따라서 다음 중 하나를 수행할 수 있습니다.

  1. GitHub 위치에서 이 파일의 최신 버전을 다운로드하세요.https://raw.githubusercontent.com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf그리고 원래 있어야 할 곳에 다시 놓아두세요
  2. 또는 파일을 변경 nginx.conf하고 오류가 발생한 줄(해당 파일이 포함된 줄)을 Github에서 얻은 내용으로 바꾸세요.

답변2

/etc/letsencrypt/options-ssl-nginx.conf다음에서 이와 같은 파일을 찾을 수 있습니다 .CentO.

sudo yum install yum-utils
repoquery --list python2-certbot-nginx

아니면 이것처럼우분투.

dpkg -L python2-certbot-nginx

파일을 /etc/letsencryptdir에 복사하십시오.

sudo cp /usr/lib/python2.7/site-packages/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf /etc/letsencrypt/

Docker에서 nginx 및 letsencrypt를 사용하려면 다음을 읽어보세요. 이 튜토리얼

관련 정보