Ngnix 도움말 - Nginix를 사용하는 여러 VM(단일 공용 IP가 있는 ESXi)?

Ngnix 도움말 - Nginix를 사용하는 여러 VM(단일 공용 IP가 있는 ESXi)?

저는 현재 Nginx에 대해 알아보고 있으며 몇 가지 지침이 필요합니다. 이것은 나에게 아주 새로운 것이므로 이미 답변을 받았다면 사과드립니다. (먼저 검색했습니다!)

시나리오: Certbot으로 SSL을 적용한 Ubuntu VM(각각 1개의 VM)에 Seafile 서버(cloud.example.com)와 Zammand 서버(support.example.com)가 있습니다. 분명히 SSL을 실행할 수 있지만 둘 다 포트 443을 사용하므로 Ngnix를 제대로 사용하지 않으면 문제가 발생합니다.

첫 번째 질문은 URL 요청을 다른 VM에 전달하는 Ngnix 전용 VM을 가질 수 있습니까? 아니면 Ngnix/SSL을 모두 사용하려면 동일한 서버에 Seafile과 Zammand가 모두 필요합니까? (현재 테스트를 위해 하나의 VM에 두 가지를 모두 설치했습니다.)

단일 서버에서 실행하는 경우(Seafile과 Zammand가 모두 설치되어 있지만 각각 자체 VM에 있는 것을 선호하지만) "/etc/nginx/sites-available/default"를 편집하고 추가하면 된다고 가정합니다. 거기에 라우팅 경로가 있나요? 현재 저는 Seafile, Zammand, default 등 3개의 "사용 가능한 사이트"를 가지고 있습니다. 현재 "seafile"인 "sites-active"가 있는 것을 확인했습니다. 따라서 cloud.example.com과 support.example.com 모두 Seafile(cloud.example.com)로 라우팅됩니다.

아니면 내가 이것을 완전히 잘못 보고 있는 걸까? 건설적인 조언을 환영합니다! 내가 이것을 너무 명확하게 설명하지 않았다면 사과드립니다.

답변1

가장 좋은 방법은 세 번째 VM을 만들고 거기에 nginx를 설정하는 것입니다. 기존 VM 중 하나에 설정할 수도 있습니다.

이 작업이 완료되면 nginx를 구성하여 여러 "서버" 항목을 사용하고, 서비스를 제공하고 다른 백엔드로 연결하는 각 도메인에 대해 하나씩 사용해야 합니다.

웹에서 이를 수행하는 방법에 대한 다양한 튜토리얼이 있습니다.

답변2

그럼 두 개의 별도의 독립된 서버가 있는 거죠? 이것이 사실이라면 SNI 검사와 같은 방법을 사용하여 연결을 프록시할 호스트를 결정해야 합니다. nginx 1.11.5 및 ngx_stream_ssl_preread_module.

프록시 뒤에 있는 원격 시스템으로 데이터를 보낼 수 있도록 ProxyPass 지시문을 구성해야 합니다. 그런 다음 Nginx 호스트가 인터넷에 있는지 확인하여 모든 쿼리가 먼저 통과하도록 합니다.

SNI 검사 및 TCP 스트림 프록시를 사용하여 원격 서버는 모든 SSL 연결을 직접 처리하고 nginx는 단일 IP 엔드포인트의 트래픽을 프록시합니다.

나는 이것을 또한 확인해 볼 것이다:https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/

TCP 스트림 프록시를 사용할 때 SNI 검사를 구체적으로 해결합니다.http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.htmlSNI는 핸드셰이크가 실제로 처리되기 전에 TLS 핸드셰이크 중에 포함되므로, 이를 통해 nginx는 트래픽을 올바른 엔드포인트로 보내고 해당 엔드포인트가 실제로 TLS 핸드셰이크를 수행할 수 있습니다.

관련 정보