
공용 IP 주소가 하나 있습니다. 요청된 서버 이름으로 구별되는 여러 서비스에 대해 포트 80 및 443의 공용 IP를 통해 액세스를 허용하려고 합니다.
그러나 하나의 서비스에는TCP공용 IP의 포트 80 및 443에서 역방향 프록시가 작동합니다. 다른 하나는 TCP 역방향 프록시가 필요하지만 포트 443에만 있습니다. 나머지는 단지 웹사이트이고 http 역방향 프록시로는 괜찮지만 방문자와 letsencrypt가 쉽게 사용할 수 있도록 포트 80과 443에서 웹사이트에 공개적으로 액세스할 수 있기를 바랍니다.
간단하게 유지하기 위해 필요한 만큼 많은 VM과 개인 IP를 스핀업할 수 있지만 하나의 공용 IP 주소로 제한됩니다.
SNI를 사용하여 nginx 설정을 역방향 프록시로 수행할 수 있나요? 이론적으로는 다른 포트에서 수신 대기하기 위해 필요한 웹 사이트 설정이 있는 두 번째 웹 서버를 사용하여 적절한 서버로 전달되는 SNI를 사용하여 호스트 이름으로 모든 것을 tcp 스트리밍할 수 있어야 한다고 생각합니다. 예를 들어, nginx.conf:
stream {
map $ssl_preread_server_name $name {
serviceone.domain.tld serviceone;
servicetwo.domain.tld servicetwo;
website1.domain.tld website1;
website2.domain.tld website2;
}
upstream serviceone {
server 10.1.99.7:443;
}
upstream servicetwo {
server 10.1.99.20:443;
}
upstream website1 {
server 10.1.99.30:10443;
}
upstream website2 {
server 10.1.99.30:10444;
}
server {
listen 443;
listen 80;
resolver 8.8.8.8;
proxy_pass $name;
ssl_preread on;
}
}
내 nginx.conf에 위와 비슷한 작업이 있지만 포트 80 요청이 어떻게 방정식에 포함되는지 이해하는 데 약간 어려움을 겪고 있습니다. 서버 블록에서 80을 수신했지만 요청이 어떻게 처리되는지 설명할 수 없었습니다. 동일한 서버 이름을 요청하는 경우 443과 80을 구분함)
nginx나 haproxy 등을 사용하여 더 나은 방법을 사용할 수 있습니다. 감사합니다!
답변1
각 호스트 이름에 대해 별도의 server{...} 블록을 사용하세요.
추가 모듈에 대한 종속성 없이 작업을 수행하며 업스트림 서버가 프록시에 필요한 구성이 다를 경우 많은 어려움을 덜어줄 것입니다.