단일 포트를 통해 암호화 및 암호화되지 않은 http 연결을 처리하는 방법 작동합니까? 원격에서 http : // myhost.com:8080/*를

다음 다이어그램을보십시오.

대체 텍스트

이것은 어떻게 작동합니까?

  • 원격에서 http : // myhost.com:8080/*를 요청하면 루프백 인터페이스의 포트 8008에서 수신 대기하는 http 서버로 요청을 전달해야합니다. 이것은 쉬운 부분입니다.

  • 원격 사용자가 http://myhost.com:8080/specialurl …을 요청할 때

    • 응용 프로그램 수준 게이트웨이로 작동하는 프로그램 (암호화 된 세션에 대한 연결 업그레이드 할 수 있어야합니다 포트를 변경하지 않고를 )

    • 원격 브라우저와 암호화 된 세션을 설정 한 후 루프백 인터페이스의 포트 8000에서 수신 대기하는 C 프로그램으로 요청을 전달해야합니다.

내 질문은 :

  1. 프로덕션 환경에서 이와 같은 솔루션을 배포 한 적이 있습니까? 당신이 가지고 있다면…
  2. 응용 프로그램 게이트웨이로 사용하기 위해 어떤 제품을 사용 했습니까?
  3. 구성 예를 제공 할 수 있습니까?

엄격한 제한 사항 :

  • 내가 방화벽을 통해 제어 할 수 없습니다 , 나는 내부 서버에 외부 트래픽을 얻을 수있는 유일한 포트 포트 번호는 무관하다 8080입니다, 문제는 방화벽 수준에 하나의 포트 개방이 있다는 것을 전달 수신 내부 서버로의 트래픽.
  • 내부 서버는 Linux를 실행 중이어야합니다 (현재 Debian Lenny를 실행 중임)
  • 원격 사용자는이 서버에 액세스하기 위해 현재 웹 브라우저와 인터넷 연결 만 있으면됩니다. 이것은 여기서 SSH를 통한 역방향 포트 전달이 옵션이 아님을 의미합니다.
  • 프로덕션 환경에서 테스트되었으며 쉽게 배포 할 수있는 제품이 필요합니다. 내 자신의 응용 프로그램 게이트웨이를 개발하지 않으려 고합니다 (이 경우 서버 결함에서 묻는 대신 스택 오버플로 에서이 질문을하는 것 같습니다).

소프트 제한 :

  • Apache를 응용 프로그램 게이트웨이로 사용하지 않으려 고합니다 (유일한 선택 일 경우 기꺼이 할 수는 있지만)
  • 가능하면 응용 프로그램 게이트웨이는 성숙한 오픈 소스 소프트웨어 제품이어야합니다.

응용 프로그램 게이트웨이까지 성공한 제품

  • 니 진스
  • lighttpd
  • 파운드

관련 RFC

  • RFC2817 (… 기존 TCP 연결을 통해 TLS (Transport Layer Security)를 시작하기 위해 HTTP / 1.1의 업그레이드 메커니즘을 사용하는 방법에 대해 설명합니다. 보안되지 않은 보안 HTTP 트래픽이 동일한 잘 알려진 포트를 공유 할 수 있도록합니다 …)
  • RFC2818 (… … 은 인터넷을 통해 TLS를 사용하여 HTTP 연결을 보호하는 방법을 설명합니다. 현재 관행은 다른 서버 포트를 사용하여 보안 트래픽을 안전하지 않은 트래픽과 구분하여 SSL을 통한 HTTP (TLS의 이전 버전)를 계층화하는 것입니다 … )


답변

그들 모두를 지배하는 하나의 포트 는 누군가가 자바 세계에서 그것을 구현했다고 보여줍니다.

프로덕션 환경에서 이러한 솔루션을 배포 한 적이 있습니까?

나는 그것을하지도 않았고 그것을 추천하지도 않았다. 컨설턴트로서 저는 고객이 표준화되고 입증 된 기술을 사용하도록 권장합니다. 엣지 케이스를 제외하고는 RFC를 제대로 구현하는 시스템이 없으며, 이것이 내가 제안하거나 지원하려는 것이 아닙니다.


답변

아파치는 여기서 당신을 도와주지 않을 것입니다. 주어진 포트에서 HTTP 또는 HTTPS 연결 만 수신 할 수 있습니다.

내가 아는 한,이 기능을 구현하는 “성숙한 제품”은 없습니다. 네트워크 관리자에게 방화벽에 다른 구멍을 뚫어 주거나 ​​여러 수신 포트를 설정할 수있는 외부 엔드 포인트에 VPN 또는 SSH 터널을 설정하십시오.


답변