나는 이런 구성을 가지고있다.수년 동안 일해 왔습니다.:
server {
listen 80;
server_name www.domain.com domain.com;
return 301 https://domain.com$request_uri;
}
# !!!!
# line 10
server {
listen 443 ssl http2;
server_name www.domain.com;
return 301 https://domain.com$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name domain.com;
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
ssl_prefer_server_ciphers on;
ssl_session_timeout 180m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
add_header Strict-Transport-Security 'max-age=31536000';
# [.................]
}
이제 오류로 인해 실패하기 시작합니다.
no "ssl_certificate" is defined for the "listen ... ssl" directive in /etc/nginx/sites-enabled/domain.com:10
nginx는 어떻게 됐나요? 어떻게 고치나요?
답변1
귀하의 블록에 선언이 server
없습니다 .ssl_certificate
ssl_certificate_key
server
모든 블록이 동일한 인증서를 사용하도록 이러한 명령문을 블록 외부로 이동할 수 있습니다 server
(인증서가 하나만 있다고 가정).
Nginx는 "'ssl_certificate'가 정의되지 않았습니다" 오류에 대해 좀 더 완화할 수 있습니다. server
이러한 블록을 되돌리면 오류가 신비롭게 사라질 수 있다고 생각됩니다 . 하지만 정확성을 위해서는 server
인증서가 필요한 각 블록마다 인증서를 정의 하거나 http
모든 서버의 블록 범위 내에서 인증서를 정의해야 합니다.