여러 애플리케이션(가상 호스트)에 대한 HTTPS의 Nginx server_name 문제

여러 애플리케이션(가상 호스트)에 대한 HTTPS의 Nginx server_name 문제

HTTPS로 전환할 계획을 세울 때까지 완벽하게 작동하던 서버에 두 개의 응용 프로그램이 있습니다.

앱 1의 Nginx 구성:

server_name abc.com my.abc.com static.abc.com

앱 2에 대한 회의:

server_name _;

SSL을 활성화하기 전에 두 앱이 모두 작동했습니다.

앱1http://static.abc.com/some-assets.png

앱2http://static.def.com/some-assets.png

SSL을 활성화한 후

앱1https://static.abc.com/some-assets.png

앱2https://static.def.com/some-assets.png

이제 App2에 액세스하려고 하면 https://static.def.com/some-assets.png어떻게든 App 1을 가리키게 됩니다.

나는 파헤쳐 보았고 App 2 Nginx 구성 server_name _;으로 교체하면 작동하기 시작한다는 것을 알았습니다.server_name static.def.com;

제 질문은 HTTPS를 통해 도메인을 제공하려면 Nginx가 도메인을 명시적으로 정의해야 한다는 것입니다. 아니면 SSL 핸드셰이크가 실패하는 등의 문제로 인해 이렇게 끝나나요?

업데이트:

Nginx 구성 파일:

abc.conf

def.conf

답변1

요하네스(Johannes)가 말했듯이, 나는 당신이 ' 절대 아무것도 아니다' _라는 의미 에 대해 오해를 갖고 있다고 생각합니다. server_name대부분의 가이드는 명명된 가상 서버를 방해하지 않도록 기본 포괄 서버에 이를 포함합니다.

당신이 읽고 있는 내용에서 놓쳤던 것(또는 당신이 읽고 있는 내용을 쓴 사람이 놓쳤을 수도 있음)은 적절한 기본 서버가 실제로 지시문 default_server의 일부로 옵션을 포함한다는 것입니다 listen. 자세한 내용은 nginx.org/r/listen을 읽어보세요.

답변2

서버 정의 순서에 따라 달라질 수 있습니다. _은(는) 특별한 이름이 아니며 잘못된 도메인일 뿐이므로 일치하지 않습니다. 이는 다음과 같은 호스트에 대한 다른 서버 정의의 서버 이름과 동일합니다 static.def.com. 둘 다 일치하지 않습니다. 일치하는 항목이 전혀 없으면 nginx는 단순히 첫 번째 서버 정의를 사용합니다.

관련 정보