(SSL: error:02001002:system library:fopen:No such file or directory:fopen('/var/dis (…)
가이드를 따르고 있지만, 이 오류에 대한 내용은 찾을 수 없어요
cd ssl: No such file or directory
안녕하세요, @slivo
이것은 컨테이너를 마지막으로 다시 빌드했을 때 Let’s Encrypt 설정이 인증서를 생성하지 않았음을 의미합니다.
물론 이미 알고 계실 거라고 생각합니다!
이번 주에 그런 문제로 설치가 실패한 적이 있습니다. 아마도 아래 명령어를 실행해 보세요.
./launcher rebuild app
다시 재구성했습니다. 가이드에 따라 설정을 마쳤습니다. 인증된 SSL을 설정했습니다 (/etc/nginx/sites-enabled/discourse.conf) 하지만 다음과 같은 오류가 발생합니다:
SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE
nginx를 전혀 시작할 수 없습니다.
nginx.service: Control process exited, code=exited status=1
nginx.service: Failed with result 'exit-code'.
Process: 3840 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 25108 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=1/FAILURE)
// 고성능 웹 서버 및 리버스 프록시 서버 시작 실패.
네, 그리고 이 가이드도 사용하고 있습니다: Run other websites on the same machine as Discourse
@slivo 님 안녕하세요.
위 링크는 도커 컨테이너에서 Discourse를 실행하고, 애플리케이션을 리버스 프록시에게 UNIX 소켓으로 노출하는 구조의 개요입니다.
이 경우, 컨테이너의 yml 파일에서 SSL을 활성화해서는 안 됩니다. 대신 컨테이너 외부에서 리버스 프록시만 사용하여 certbot으로 Let’s Encrypt SSL을 설정해야 합니다.
전반적인 고수준 아키텍처는 다음과 같습니다:
웹 사용자 <-- HTTPS --> 리버스 프록시 <-- HTTP --> 도커 컨테이너
비밀번호와 이메일 주소를 xxxx로 가린 후 yml 파일을 올려주시면, 현재 어떤 설정이 되어 있는지 확인해 보겠습니다.
감사합니다.
하지만 지금은 이해가 안 됩니다. 그래서 certbot으로 새로운 인증서를 만들었습니다. 그리고 여기 이렇게 되어 있어요:
/etc/letsencrypt/live/myadress.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/myadress.com/privkey.pem
이 파일의 주소를 변경해야 하는 건가요, 아니면 /etc/nginx/sites-enabled/discourse.conf 같은 파일을 수정해야 하는 건가요? 아니면 제가 완전히 잘못 하고 있는 건가요?
@slivo 님, 안녕하세요
nginx 인스턴스를 사용하여 다른 앱 앞에 리버스 프록시를 설정할 때: 컨테이너 내부인지 외부인지에 관계없이 설정 파일의 위치를 매우 구체적으로 지정해야 합니다.
정확히 이해했는지는 모르겠습니다. 저는 nginx 뒤에 discourse를 실행하고 싶을 뿐입니다. 서버에 다른 애플리케이션은 없지만, 외부로부터 더 많은 보호를 받기 위해 이렇게 하려는 것입니다.
@slivo 님, 안녕하세요.
당신의 좌절감을 이해합니다. 친절하게 설명해 드리겠습니다.
위에서 작성하신 게시물 중 하나에서 이렇게 말씀하셨습니다.
/etc/letsencrypt/live/myadress.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/myadress.com/privkey.pem
Docker 컨테이너 내부에 있는지, 외부에 있는지 언급하지 않으셨습니다.
알다시피, nginx(당신의 경우)는 호스트에서 직접 실행되고 있으며, 앱(Docker 컨테이너) 내부에서도 실행되고 있습니다.
아래 내용을 게시할 때:
/etc/letsencrypt/live/myadress.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/myadress.com/privkey.pem
전체 정보를 게시하지 않는다면, 외부인인 우리가 정확히 무엇을 지칭하는지 어떻게 알 수 있겠습니까? 그 설정은 컨테이너 내부에 있나요, 아니면 외부에 있나요? 컨테이너 외부에 대해 말씀하고 있다고 "추측"하고 "가정"할 수는 있지만, 이러한 세부 정보를 제공하지 않으시므로 확신할 수 없습니다. 제 경험상 문제와 해결책 사이의 가장 짧은 길은 아무것도 가정하지 않고 세부 사항에 주의를 기울이는 것입니다.
또한, yml 파일을 게시하지 않으셨습니다. 컨테이너 외부의 nginx 설정 파일도 게시하지 않으셨습니다. 따라서 설정에서 실제로 무엇을 하고 있는지 우리가 “볼” 수 없습니다.
도움이 되길 바랍니다.