nginx는 ssl_certificate 경로에서 $ server_name을 사용합니다. 경로에 변수

파일 경로에 변수 이름을 어떻게 사용할 수 있습니까?

ssl_certificate /home/ec2-user/.certificados/$server_name.crt;
ssl_certificate_key /home/ec2-user/.certificados/$server_name.key;



답변

모든 지시문에 변수를 사용할 수는 없습니다. ssl_certificate리터럴 문자열로 취급되며 변수가 지원되지 않는 많은 지시문 중 하나입니다.

호스트에 다른 인증서를 지정하려면 서버 블록에 명시 적으로 작성해야합니다.

server {
    server_name example.com;
    ssl_certificate /home/ec2-user/.certificados/example.com.crt;
    ssl_certificate_key /home/ec2-user/.certificados/example.com.key;
    # ...
}
server {
    server_name example.net;
    ssl_certificate /home/ec2-user/.certificados/example.net.crt;
    ssl_certificate_key /home/ec2-user/.certificados/example.net.key;
    # ...
}
# ...

구성 복제가 불편하다고 생각되면 템플릿을 생성하고 해당 템플릿을 사용하여 nginx 구성을 생성하십시오. http://nginx.org/en/docs/faq/variables_in_config.html 도 참조하십시오 .


답변

nginx 1.15.9 부터 변수를 사용할 수 있습니다 (2019 년 2 월 26 일)

변수를 사용한다는 것은 각 SSL 핸드 셰이크마다 인증서가로드됨을 의미하며 이는 성능에 부정적인 영향을 줄 수 있습니다.

그러나 nginx 1.15.12 (2019 년 4 월 16 일) 의 변경 사항에 유의하십시오 .

버그 픽스 : 변수가 “ssl_certificate”또는 “ssl_certificate_key”지시문에 사용되고 OCSP 스테이플 링이 활성화 된 경우 작업자 프로세스에서 세그먼테이션 결함이 발생할 수 있습니다.


답변