가상 서버가 많은 웹 서버가 있습니다. 그중 하나만 SSL입니다. 문제는 SSL을 수신하는 catchall 서버 블록이 없기 때문에 다른 사이트에 대한 https 요청은 1 SSL 블록에 의해 제공된다는 것입니다.
기본적으로 내 구성은 다음과 같습니다.
# the catch all
server {
listen 80 default;
# I could add this, but since I have no default cert, I cannot enable SSL,
# and this listen ends up doing nothing (apparently).
# listen 443;
server_name _;
# ...
}
# some server
server {
listen 80;
server_name server1.com;
# ...
}
# some other server ...
server {
listen 80;
server_name server2.com;
# ...
}
# ... and it's https equivalent
server {
listen 443;
ssl on;
server_name server2.com;
# ...
}
이제 443에 대한 기본 리스너가 없으므로 https 블록 으로 요청이 처리 https://server1.com
됩니다 server2.com
. 이에 대한 논리를 다음 server_name
의 워드 프로세서.
일치하는 것이 없으면 구성 파일의 서버 {...} 블록이 다음 순서에 따라 사용됩니다.
- 일치하는 청취 지시문이있는 서버 블록 [default | default_server]
- 일치하는 청취 지시문이있는 첫 번째 서버 블록 (또는 암시 적 청취 80)
이 문제에 대해 선호되는 솔루션은 무엇입니까? 443에서 수신 대기하고 잘못된 요청을 처리 할 수 있도록 모든 서버 포착 블록에 대해 더미 인증서를 설정해야합니까? 내가 알지 못하는 매개 변수가 정확한 호스트 이름과 강제로 일치 server
합니까?