2014-03-19 2 views
0

그래서 기본 설정이 있습니다. domain.com이라는 메인 도메인이 있습니다. 아래에는 3 개의 하위 도메인이 있습니다. sub1.domain.com, sub2.domain.com 및 sub3.domain.com. 이제 모든 요청을 바람둥이로 전달하고 싶지만 하위 도메인이 동적 인 가상 호스트 설정이 있습니다. 그래서 바람둥이에 요청을 전달할 때 sub1.domain.com은 둘 다 동일한 바람둥이 인스턴스에서 실행되기 때문에 sub2.domain.com에서 앱에 액세스 할 수 있습니다. 이것을 동적으로 전달할 수 있습니까? 즉, 새 하위 도메인을 추가하면 다른 tomcat 인스턴스와 자동으로 분리되어 자체 Tomcat 인스턴스를 가져올 수 있습니까? 나는 또한 HTTPS 서버 블록을 가지고 있지만 그 순간에 문제가되지 않습니다Nginx 앞으로 아파치 바람둥이에 대한 모든 요청

server { 
    listen   80; 
    server_name  *.domain.com; 
    root   /var/www/$host; 
    index   index.php index.html index.htm; 

    include   error_pages; 
    include   php_config; 

      location /backend { 
      proxy_set_header X-Forwarded-Host $http_host; 
      proxy_set_header X-Forwarded-Server $http_host; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_pass http://localhost:8080; 
    } 

    if (-e /var/www/$host/ssl/$host) { 
      rewrite^https://$host$request_uri? permanent; 
    } 

} 

:

여기 내 nginx.conf입니다. 두 번째 메모에서 내가 해결할 수있는 백엔드에 액세스하려고하면 404가 표시됩니까? 그래서 내가 sub1.domain.com/backend에 갈 때 나는 tomcat 인터페이스를 얻었 을까?

내 nginx.conf 파일을 약간 변경했는데 Tomcat 404 페이지를 제거하고 Tomcat이 작동하고 있음을 알 수 있습니다. 나는 텍스트를 읽을 수 있지만 그게 전부입니다. 아니 그래픽 인터페이스는 단지 텍스트와 링크가 없습니다. 이것은 내 구성 파일이 어떻게 생겼는지입니다.

#DOMAIN.COM 

upstream backend { 
     server   localhost:8080; 
} 

server { 
    listen   80 default; 
    listen   443 ssl; 
    server_name  www.domain.com domain.com; 
    root   /var/www; 
    index   index.php index.html index.htm; 

    ssl_certificate certificates/klant.nl.crt; 
    ssl_certificate_key certificates/klant.nl.key; 

    include   error_pages; 
    include   php_config; 

    location /backend { 
      proxy_set_header X-Forwarded-Host $http_host; 
      proxy_set_header X-Forwarded-Server $http_host; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_pass http://backend/; 
    } 
} 

무엇이 잘못되었는지 ... 아주 어리 석다. domain.com/backend 대신 domain.com/backend/로 이동 했어야합니다.

+0

tomcat에서 새 하위 도메인을 정의합니까? –

+0

아니, 전에는 바람둥이로 일한 적이 없기 때문에 설정 파일을 편집하는 데 조금 불안해합니다. 나는 기본적으로 새 하위 도메인에 대한 docroot를 만든 다음 즉시 작동해야합니다. 적어도 그것이 내가 원하는 것입니다. – Xenonbart

+0

여기에 문제가 nginx에 없기 때문에 nginx는 모든 것을 앞으로 바람둥이로 보낼 것이고, 그 다음에 바람둥이는 어떤 웹 사이트인지 알아 내야합니다. 내가 전에 바람둥이를 사용하지 않은 것 같아요. nginx 설정 과거 도움이, 그들은 충분히 좋은 것,하지만 당신이'php_config'를 포함 할 필요가 있다고 생각하지 않거나 인덱스로'index.php'를 사용하면 그것이 자바 웹 사이트라면 오타를 수정합니다. @'$ proxy_add_x_forwar $ ' –

답변

0

Tomcat이 대상 호스트에 대해 상관하지 않는 경우, 톰캣 모든 도메인에 대한 모든 요청을 매핑하고 바로 <Engine>defaultHost로 설정 톰캣에서 하나의 <Host>을 사용합니다.

Tomcat이 기본적으로 구성되는 방식은 다음과 같습니다. localhost 엔진의 기본값 인 호스트. 해당 호스트에 배포 된 웹 응용 프로그램 (기본적으로 webapps/에있는 웹 응용 프로그램)은 요청을 처리 할 가상 호스트를 일반적으로 선택하는 HTTP Host 헤더의 내용에 관계없이 들어오는 모든 요청에 ​​응답합니다.

+0

하지만 sub1.domain.com/backend에 가려고해도 404 페이지가 남습니다. 그래서 Tomcat이 HTTP 호스트 헤더에 무엇이 잘못되었는지 내가 뭘 잘못하고 있는지 상관하지 않는다면? – Xenonbart

+0

404를 보내는 사람 : Tomcat 또는 Nginx? 웹 응용 프로그램이 "/ backend"에 배포되지 않으면 별난 일이 일어날 것입니다. –

+0

Tomcat이 404를 제공합니다. Tomcat이 어떻게 작동하는지 아직 모르겠습니다. – Xenonbart