WSGI 서버 앞에 역방향 프록시를 배치하는 이유는 무엇입니까?

WSGI 서버 앞에 역방향 프록시를 배치하는 이유는 무엇입니까?

WSGI 애플리케이션 배포를 위한 일반적인 구성에는 역방향 프록시 역할을 하는 범용 웹 서버(예: nginx) 뒤에 WSGI 서버(예: uWSGI 또는 Gunicorn)가 포함됩니다. 리버스 프록시를 사용하는 주요 이유 중 하나는 정적 파일을 효율적으로 제공하기 위해서입니다. 다른 이유가 있나요?

내 애플리케이션에 Python 코드만 포함되어 있고 정적 콘텐츠에는 관심이 없다고 가정해 보겠습니다. 이 경우 역방향 프록시가 필요한 이유는 무엇입니까? uWSGI와 Gunicorn은 이미 클라이언트와 인터페이스할 수 있는 비동기 HTTP 서버를 제공하고 있습니다.

WSGI HTTP 서버를 외부 세계에 직접 노출하는 것이 더 나은 실제 사례가 있습니까?

답변1

  • 본격적인 역방향 - 프록시와 같은 더 많은 구성 옵션이 있습니다.

    • 고쳐 쓰기
    • 위치
    • 섬기는 사람
    • https
    • 헤더 정리
    • 만료
    • gzip
    • ....
  • 로드 밸런싱을 할 수 있습니다

  • Proxy_cache를 사용할 수 있습니다
  • 앱 서버가 다운된 경우에도 사용자 정의 오류 페이지를 구현할 수 있습니다.
  • WAF를 구현할 수 있습니다
  • (때때로) 취약점에 대한 핫패치를 할 수 있습니다

보너스포인트

  • 다음 설정(nginx)을 사용하면 초당 100,000개의 요청(평균 하드웨어 기준)으로 클라이언트에게 깊은 인상을 줄 수 있습니다.

.

location /perftest/ {
    return 200;
}

답변2

역방향 프록시 사용의 추가 이점.

귀하에게 도움이 될 수 있는 다른 혜택도 얻을 수 있습니다.

  • 인터넷에서 정보를 숨길 수 있습니다(웹 서버 버전, 앱 서버, 데이터베이스 서버, API).
  • 하나의 도메인(Linux tomcat + Windows IIS 등) 뒤에 여러 웹 서버 기술을 구현할 수 있습니다.
  • https/SSL 연결을 종료하고 이를 내부 http 서비스에 매핑할 수 있습니다.
  • 모든 로깅을 중앙 집중화할 수 있습니다.
  • 모든 DDOS 예방을 중앙 집중화할 수 있습니다.
  • 웹 서버 계층에서 ID 관리를 구현할 수 있습니다.

보안상의 이점

  • 위와 같이 내부서버가 숨어있습니다.
  • 호스트(DMZ라고 함)의 소프트웨어 방화벽을 사용하지 않고도 인터넷에서 내부 앱 서버 서버 및 데이터베이스 서버를 라우터/방화벽화할 수 있습니다.
  • 즉시 해결이 불가능한 서버를 알려진 문제(웹 애플리케이션 방화벽)나 알려진 공격 패턴으로부터 보호할 수 있습니다.

관련 정보