다른 포트에서 실행되는 nginx 서버를 통해 한 포트에서 실행되는 Java 애플리케이션 제공

다른 포트에서 실행되는 nginx 서버를 통해 한 포트에서 실행되는 Java 애플리케이션 제공

nginxHTTPS(443)를 통해 실행되는 PHP가 있습니다. 또한 HTTPS 포트 8443을 통해 실행되는 Java 애플리케이션도 있습니다.

HTTPS(443)를 통해 Java 애플리케이션을 노출하는 방법이 있습니까? 어쩌면 proxy_pass뭔가를 사용하거나 (참조여기예를 들어)?

내 목표는 사용자가 단일 포트를 통해 두 애플리케이션을 모두 사용할 수 있도록 하는 것입니다.

  • https://server/ - 표준 웹페이지
  • https://server/java - Java 애플리케이션으로 리디렉션

답변1

이것은 실제로 "인터넷에서" 널리 보고되고 있습니다. "역방향 프록시"와 "서버 블록"을 살펴보세요.

문제는 단일 IP 주소가 포트에서 수신 대기하는 프로세스를 하나만 가질 수 있다는 것입니다.누구나nginx또는귀하의 자바 애플리케이션.

이제 특정 HTTP 요청에 응답하도록 nginx를 구성할 수 있습니다.필드(IP 주소가 아니라 "yourhost.com"과 같은 이름 서비스 항목) 다른 주소와는 다릅니다. 그런 다음 두 개의 "가상" 도메인을 가질 수 있습니다.

java.server 및 서버, 클라이언트가 연결된 서버에 따라 nginx는 요청 자체를 처리하거나(PHP가 실행되도록 함) 역방향 프록시로 작동하지만( proxy_pass유일한 방법은 아닙니다) 일을 하는 것).

일반적으로 이 점을 주의하세요.~ 해야 하다TLS 압축 풀기(그렇지 않으면 nginx는 요청된 도메인을 알 수 없음) 및 HTTP 콘텐츠 재패키징이 포함됩니다. 즉, Java 애플리케이션의 TLS 인증서가 클라이언트에 도달하지 않습니다. 일반적으로 괜찮을 수 있지만 클라이언트가 Java 애플리케이션에서 신뢰를 설정해야 하는 경우 선택의 여지가 없습니다.

내부 네트워크라면 다른 IP 주소를 얻으세요. 내부 IP 주소에는 요금이 부과되지 않습니다. 이것이 외부 서비스인 경우 IPv6으로 이동할 수 있는지 고려하십시오(일반적으로 전체 IP 주소 블록을 한 번에 가져오고 각 서비스가 자체 주소를 가질 수 있으므로 이 문제가 없습니다). 다른 IPv4 주소에 있습니다.

관련 정보