다음과 같은 시나리오가 있습니다.
단일 서버 및 단일 Tomcat 인스턴스의 단일 컨텍스트에서 여러 다른 도메인을 제공하는 단일 애플리케이션입니다. (모든 도메인의 DNS가 구성되어 작동합니다)
즉, 브라우저가 주소를 가리킬 때 필요합니다.
domain1.example
>> 다음으로 리디렉션 >>http://127.0.0.1/웹사이트앱
domain2.example
>> 다음으로 리디렉션 >>http://127.0.0.1/웹사이트앱
domainn.com.br
>> 다음으로 리디렉션 >>http://127.0.0.1/웹사이트앱
애플리케이션에서는 요청 URL을 통해 호출 도메인, 즉 내 클라이언트 식별자를 검색하고 도메인을 통해 데이터베이스의 정보를 가져오고 구성된 보기를 해당 클라이언트에 반환합니다.
다음과 같이 NGINX(최소 구성)를 구성했습니다.
server {
listen 80;
server_name domain1.example domain2.example domainn.com.br;
root /opt/tomcat2/webapps/websites;
location / {
proxy_pass http://127.0.0.1:8080/websitesapp;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
톰캣 서버.xml
<Context docBase="websitesapp" path="/" reloadable="true" source="org.eclipse.jst.jee.server:websitesapp"/>
애플리케이션에서 도메인을 검색하고 데이터베이스에서 로드된 정보로 뷰를 "마운트"합니다.
이 설정이 맞나요?
브라우저의 URL로 도메인을 검색하지 않고 보다 안전하게 Tomcat에 도메인을 전달할 수 있는 방법이 있습니까?
이러한 유형의 접근 방식에 금기 사항이 있습니까?
더 흥미로운 다른 접근 방식은 없나요?
답변1
을 제외하고 server_name
이러한 server
블록은 다른 부분은 동일합니다. 대신 세 가지 도메인을 모두 나열하는 단일 server
블록을 사용할 수 있습니다 server_name
. 아니면 20, 나중에 확장하면...
$http_host
브라우저에서 제공했더라도 유효성이 검사되었으므로 사용해도 괜찮습니다 . 블록 server_name
중 하나에 있는 이름 중 하나와 일치하지 않으면 server
사용되지 않습니다. ( server
기본 구성에 있는 default 가 있는 경우 )