여러 도메인 및 동일한 애플리케이션에 대한 Nginx 구성

여러 도메인 및 동일한 애플리케이션에 대한 Nginx 구성

다음과 같은 시나리오가 있습니다.

단일 서버 및 단일 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 가 있는 경우 )

관련 정보