하나의 Linux 시스템에서 두 개의 웹 서버를 실행하시나요?

하나의 Linux 시스템에서 두 개의 웹 서버를 실행하시나요?

질문:저는 각각 JAVA와 PYTHON을 사용하여 만든 두 개의 웹 애플리케이션을 가지고 있습니다.

JAVA 애플리케이션은 Tomcat 서버를 사용하여 포트 번호 8000에서 실행됩니다. PYTHON 애플리케이션은 web.py를 사용하고 포트 번호 8080에서 실행됩니다. Python(API)은 백엔드 작업을 수행하고 Java(UI)는 프런트엔드 역할을 합니다.

내 로컬 Ubuntu 컴퓨터에서는 이러한 응용 프로그램이 제대로 실행됩니다. 그러나 포트 80과 443만 열려 있고 나머지 포트는 모두 제한되어 있는 QA 컴퓨터에서 이 애플리케이션을 실행해야 합니다. authbind를 사용하여 포트 80에서 Java를 실행하려고 시도했지만 실패했습니다.

HTTP 요청을 내부적으로 해당 웹 서비스 및 포트 번호로 리디렉션하기 위해 URL 필터링을 사용하는 다른 방법이 있습니까? 다른 방법이 있다면 관련 정보를 공유해주세요.

미리 감사드립니다.

답변1

이에 대한 표준 솔루션은 일반적으로 호스트 이름을 기반으로 적절한 "실제" 서버로 요청을 전달하는 프런트 엔드 서버를 사용하는 것입니다. 이것은 ... 불리운다역방향 프록시.nginx이런 목적으로 자주 사용됩니다. ~에서지도 시간.

/etc/nginx/nginx.conf두 개의 백엔드()가 있는 역방향 프록시의 구성은 다음과 같습니다.

server {
    server_name java-app.example.com;
    proxy_pass http://localhost:8000/;
}

server {
    server_name python-app.example.com;
    proxy_pass http://localhost:8080/;
}

물론 있습니다유용할 수 있는 추가 옵션.

답변2

TCP:80에 대한 요청이 HTTP 요청의 FQDN을 기반으로 다른 실제 포트로 리디렉션되도록 nginx를 역방향 프록시로 설치하고 구성할 수 있습니다.

구경하다여기nginx 구성의 예.

관련 정보