내가 설정한 Ubuntu 20.04.3 LTS nginx 버전: nginx/1.20.2
들어오는 SSL 트래픽에 대한 역방향 프록시로 nginx를 사용하고 싶습니다. nginx에는 인증서가 없으며 ssl_preread를 사용하여 서버 이름을 가져와 백엔드로 라우팅합니다. 포트 443으로 리디렉션되는 포트 80에서 수신 대기하는 서버가 있습니다.
정말 간단하고 효과가 정말 좋아요..
내 방화벽은 포트 80 및 443을 nginx로 전달하고 nginx는 트래픽을 백엔드 서버로 보냅니다.
내 구성:
server {listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
stream {
map $ssl_preread_server_name $name {
mosa.citystates.net other-server;
}
upstream other-server{
server 192.168.10.166:443;
}
server {
listen 443;
proxy_pass $name;
ssl_preread on;
}
}
그러면 요청의 서버 이름이 스트림 맵의 어떤 이름과도 일치하지 않으면 어떻게 될까요? 이러한 요청을 bitbucket에 정상적으로 보내려면 어떻게 해야 합니까? 예: 내 DNS가 내 nginx 서버에 대한 잘못된 도메인을 확인하는 경우 nginx는 매핑의 어떤 이름과도 일치하지 않는 abc.citystates.net에 대한 요청을 받을 수 있습니다. 여기서 예상되는 반응은 무엇입니까? 내가 얻는 것은 "제공된 호스트 이름이 이 서버에 유효하지 않습니다"라는 mosa.citystates.net의 응답뿐이며 mosa.citystates.net 인증서와 응답도 보내서 나를 혼란스럽게 합니다.
내 기대는 흐름 그래프와 일치하지 않는 것들은 폐기된다는 것입니다. 또한 이름이 일치하지 않는 서버로 요청을 전달하는 것도 원하지 않습니다.
또한 nginx 서버의 IP 주소에 액세스하면 "이 사이트에 연결할 수 없습니다."라는 메시지가 표시되지만 인증서가 없어야 한다고 생각하는 것과 더 일치합니다.
그래서 저는 이것이 약간 길다는 것을 알고 있습니다. 저는 nginx를 처음 접했기 때문에 문제에 대한 간결한 설명은 현재 제 능력을 조금 넘어서는 것입니다.
이 문제를 해결하는 방법에 대한 아이디어가 매우 도움이 될 것입니다.
-FG