Apache를 리버스 프록시로 사용하는 방법 - 단계별 가이드

게시 됨: 2023-07-23

이 가이드에서 Apache를 리버스 프록시로 사용하는 방법 에 대한 답을 찾을 수 있습니다. 리버스 프록시 서버는 클라이언트와 웹 서버 또는 애플리케이션 서버와 같은 백엔드 서버 사이에서 중개자 역할을 하는 강력한 도구입니다. 클라이언트와 인터넷 사이에 위치하는 기존 순방향 프록시와 달리 역방향 프록시는 클라이언트와 하나 이상의 서버 사이에 위치합니다.

클라이언트가 요청을 하면 리버스 프록시 서버는 클라이언트를 대신하여 해당 요청을 적절한 백엔드 서버로 전달합니다. 그런 다음 백엔드 서버에서 응답을 받아 클라이언트로 다시 보냅니다. 이 프로세스는 백엔드 서버의 ID와 내부 구조를 클라이언트로부터 효과적으로 숨깁니다.

리버스 프록시는 백엔드 서버가 인터넷에 직접 노출되지 않도록 보호함으로써 향상된 보안, 클라이언트 요청을 여러 서버에 분산시키는 로드 밸런싱, 캐싱된 콘텐츠를 클라이언트에 제공하여 성능을 향상시키는 캐싱 등 여러 가지 이점을 제공합니다.

목차

정방향 프록시와 역방향 프록시의 구별

  • 대리 방향:
    • 정방향 프록시: 인터넷의 리소스에 액세스하기 위한 클라이언트 요청을 처리합니다. 클라이언트와 인터넷 사이에 위치하여 클라이언트 요청을 외부 서버로 전달합니다.
    • 역방향 프록시: 조직의 네트워크 내 리소스에 액세스하기 위한 클라이언트 요청을 관리합니다. 클라이언트와 백엔드 서버 사이에 위치하여 클라이언트 요청을 적절한 백엔드 서버로 전달합니다.
  • 클라이언트 관점:
    • 정방향 프록시: 클라이언트는 일반적으로 정방향 프록시의 존재를 인식하지 못합니다. 클라이언트의 요청은 프록시 서버로 전송되고 대상 서버는 클라이언트에서 직접 온 것처럼 요청을 받습니다.
    • 리버스 프록시: 클라이언트는 백엔드 서버가 아닌 리버스 프록시로 직접 요청을 보냅니다. 그런 다음 리버스 프록시는 클라이언트를 대신하여 요청을 백엔드 서버로 전달합니다.
  • 사용 사례:
    • 정방향 프록시: 콘텐츠 필터링, 액세스 제어 및 클라이언트의 IP 주소를 숨겨 클라이언트 요청을 익명화하는 데 자주 사용됩니다.
    • 역방향 프록시 : 로드 밸런싱, SSL 종료, 캐싱 및 백엔드 서비스에 대한 보안 게이트웨이 제공에 주로 사용됩니다.
  • 서버 관점:
    • 정방향 프록시 : 대상 서버는 원래 클라이언트가 아닌 정방향 프록시에서 오는 요청을 봅니다. 요청을 하는 실제 클라이언트를 인식하지 못합니다.
    • 역방향 프록시: 백엔드 서버는 역방향 프록시를 클라이언트가 요청하는 것으로 간주합니다. 그들은 원래 요청을 하는 실제 고객을 알지 못합니다.
  • 보안 관련 사항:
    • 정방향 프록시: 클라이언트의 IP 주소를 마스킹하여 클라이언트 프라이버시를 강화합니다. 또한 악의적인 콘텐츠가 클라이언트에 도달하기 전에 필터링하여 추가 보안 계층을 제공할 수 있습니다.
    • 역방향 프록시: 백엔드 서버의 보호막 역할을 하여 내부 구조를 외부 클라이언트로부터 숨깁니다. 인터넷에 대한 직접적인 노출과 잠재적 공격으로부터 보호하는 데 도움이 됩니다.
  • 배포 위치:
    • 정방향 프록시: 아웃바운드 인터넷 액세스를 제어하기 위해 클라이언트의 네트워크 또는 클라이언트 장치에 배포됩니다.
    • 리버스 프록시: 인터넷과 백엔드 서버 사이의 조직 네트워크 에지에 배포되어 인바운드 클라이언트 요청을 관리합니다.

리버스 프록시의 다양한 사용 사례 탐색

리버스 프록시는 웹 애플리케이션 및 서비스의 성능, 보안 및 확장성을 향상시키는 광범위한 사용 사례를 제공합니다.

리버스 프록시의 주요 사용 사례 중 일부는 다음과 같습니다.

  • 로드 밸런싱: 리버스 프록시는 수신 클라이언트 요청을 여러 백엔드 서버에 분산시킬 수 있습니다. 이를 통해 로드를 분산하고 서버 과부하를 방지하며 리소스 활용도를 높일 수 있습니다. 로드 밸런싱은 애플리케이션의 전반적인 성능과 응답성을 향상시킵니다.
  • SSL 종료 : 리버스 프록시는 백엔드 서버를 대신하여 SSL/TLS 암호화 및 암호 해독을 처리할 수 있습니다. 이것은 백엔드 서버에서 리소스 집약적인 SSL 처리를 오프로드하여 작업 부하를 줄이고 인증서 관리를 단순화합니다.
  • 캐싱: 리버스 프록시는 자주 요청되는 리소스를 캐시 메모리에 저장할 수 있습니다. 클라이언트가 동일한 리소스를 요청하면 리버스 프록시가 캐시된 콘텐츠를 직접 제공하여 서버 부하를 줄이고 응답 시간을 개선합니다.
  • 웹 가속: 정적 콘텐츠를 캐싱하고 데이터를 압축함으로써 리버스 프록시는 클라이언트를 위한 웹 페이지 로딩을 가속화하여 보다 원활한 사용자 경험을 제공합니다.
  • 보안 및 DDoS 보호: 리버스 프록시는 인터넷과 백엔드 서버 사이의 보호 장벽 역할을 합니다. 악의적인 트래픽을 필터링 및 차단하고 DDoS(Distributed Denial of Service) 공격으로부터 보호하며 백엔드 서버의 실제 IP 주소를 숨겨 직접적인 공격을 방지할 수 있습니다.
  • WAF(웹 애플리케이션 방화벽) : 리버스 프록시는 SQL 인젝션, XSS(교차 사이트 스크립팅) 및 기타 악의적인 활동과 같은 잠재적인 위협에 대해 들어오는 트래픽을 검사하는 WAF 역할을 할 수 있습니다. 일반적인 취약점으로부터 웹 애플리케이션을 보호하는 데 도움이 됩니다.
  • 단일 진입점: 리버스 프록시는 외부 클라이언트가 여러 백엔드 서버에 액세스할 수 있는 단일 진입점을 제공합니다. 이는 네트워크 아키텍처를 단순화하고 서비스를 더 쉽게 관리하고 확장할 수 있도록 합니다.
  • 프로토콜 변환: 리버스 프록시는 한 프로토콜에서 다른 프로토콜로 요청을 변환할 수 있습니다. 예를 들어 HTTP 요청을 WebSocket 또는 기타 애플리케이션별 프로토콜로 변환하여 클라이언트와 서버 간의 통신을 용이하게 할 수 있습니다.
  • 콘텐츠 압축 및 최적화: 리버스 프록시는 나가는 콘텐츠를 클라이언트에 보내기 전에 압축하여 데이터 전송 크기를 줄이고 페이지 로드 시간을 개선할 수 있습니다.

전제 조건 - Apache를 리버스 프록시로 구성

Bitwise SSH 클라이언트 설치

  1. 브라우저에서 Bitwise SSH 클라이언트를 검색하십시오. https://www.bitvise.com/ssh-client-download 링크를 클릭하고 설치를 시작합니다.

2. 설정 설치 후 컴퓨터에서 .exe 파일을 열고 Bitvise SSH 클라이언트 설치를 완료합니다.

비트를 사용하여 서버 SSH에 로그인하는 방법은 무엇입니까?

  1. 설치가 완료되면 아래와 같은 창이 뜹니다. 호스트, 포트 및 사용자 이름을 입력하고 초기 방법 드롭다운에서 비밀번호를 선택한 다음 로그인을 클릭합니다. 비밀번호를 입력하라는 팝업이 나타납니다. SSH 암호를 입력합니다.

2. 로그인한 후 "새 터미널 콘솔"을 클릭하면 터미널이 즉시 나타납니다.

1단계 - 아파치 설치

서버 연결

이제 서버에 연결하고 APT 리포지토리를 사용하여 로컬 패키지 인덱스를 새로 고치려면 터미널에 아래 명령을 입력하고 Enter 키를 누릅니다.

 적절한 업데이트 

업데이트가 완료될 때까지 기다리는 동안 완료하는 데 약간의 시간이 걸립니다.

Ubuntu에 Apache를 설치하는 방법은 무엇입니까 ?

  1. 우분투에 아파치 설치

이제 Ubuntu에서 Apache를 설치하려면 아래 명령을 입력하고 Enter 키를 누릅니다.

 apt install -y apache2

2. 아파치 버전 확인

설치 후 다음을 사용하여 Apache 버전을 확인할 수 있습니다.

 apache2 -version

3. Apache 상태 확인

아래 명령을 사용하여 Apache2의 상태를 확인할 수도 있습니다. 이렇게 하면 서버가 실행 중인지, 주의가 필요한 문제가 있는지 빠르게 확인할 수 있습니다.

 systemctl status apache2

보시다시피 화면에 표시되는 (종료) 상태는 Apache2가 성공적으로 설치되었음을 나타내는 명확한 표시입니다. 이 결과는 오류나 문제 없이 설치 프로세스가 완료되었음을 확인합니다.

4. 아파치 활성화

Ubuntu에서 Apache2를 활성화하려면 다음 명령을 사용하십시오.

 systemctl enabled apache2

5. 아파치 시작

Ubuntu에서 Apache2를 다시 시작하려면 터미널에서 아래 명령을 사용하십시오.

 systemctl start apache2

Almalinux에 Apache를 설치하는 방법은 무엇입니까?

  1. 사용 가능한 업데이트 확인

Almalinux에 Apache2를 설치하려면 " dnf check-update" 명령을 실행하여 사용 가능한 업데이트를 확인하십시오.

 dnf check-update

업데이트가 발견되면 "dnf update"로 Linode 업데이트를 진행하십시오. 또한 프로세스 중에 커널 구성 요소가 업데이트되면 "reboot" 로 Linode를 재부팅하여 변경 사항을 적용해야 합니다.

  1. 아파치 설치

이제 필요한 Apache 패키지 설치를 진행하십시오.

 dnf install httpd httpd-tools
  1. 아파치 시작

Apache를 설치한 후 자동으로 시작되지 않습니다. 이를 시작하고 활성화하려면 systemctl 유틸리티를 활용하십시오.

 systemctl start httpd
  1. 아파치 활성화

시스템이 재부팅될 때마다 Apache가 자동으로 다시 시작되도록 하려면 활성화하십시오.

 systemctl enable httpd
  1. 아파치 상태 확인

"systemctl status" 명령을 사용하여 Apache의 상태를 확인합니다. 활성 및 실행 중으로 표시되어야 합니다.

 systemctl status httpd

2단계 - 리버스 프록시용 Apache 모듈 활성화

Ubuntu에서 어떻게 활성화합니까?

Apache 웹 서버에서 리버스 프록시를 효과적으로 활용하려면 리버스 프록시 서버에 필요한 추가 기능을 지원하는 데 중요한 특정 Apache 모듈을 활성화해야 합니다.

  1. 필수 모듈 식별

mod_proxy : Apache의 기본 프록시 모듈 역할을 하는 mod_proxy는 연결 및 리디렉션을 효율적으로 처리합니다. Apache가 기본 백엔드 서버에 대한 게이트웨이 역할을 할 수 있도록 하여 모든 리버스 프록시 설정에 없어서는 안 될 모듈이 됩니다.

mod_proxy_http : 이 모듈은 mod_proxy에 의존하며 프록시 서버 환경에서 HTTPHTTPS 요청을 지원하는 데 필수적입니다. 이를 통해 Apache는 HTTP/HTTPS 프로토콜을 사용하여 웹 응용 프로그램의 프록싱을 능숙하게 처리할 수 있습니다.

mod_ssl: 필수 기능을 제공하는 mod_ssl은 Apache HTTP 서버에 SSL v3TLS v1.x 프로토콜을 지원합니다. 이 모듈은 안전하고 암호화된 연결을 설정하고 데이터 무결성을 보장하며 웹 서버의 보안을 강화하는 데 중요합니다.

2. 모듈 활성화

이제 a2enmod 명령을 사용하여 이러한 모듈을 활성화합니다.

 sudo a2enmod proxy sudo a2enmod proxy_http sudo a2enmod ssl
  1. Apache2 서버 다시 시작

새 Apache 모듈을 활성화한 후에는 apache2 서버를 다시 시작하는 중요한 단계를 간과해서는 안 됩니다. 이 단계에서는 변경 사항이 적용되고 새로 활성화된 모듈이 Apache 서버의 구성에 완전히 통합되도록 합니다.

 sudo systemctl restart apache2
  1. 모듈 확인

다음 명령을 사용하여 이러한 모듈의 활성 상태를 확인할 수 있습니다.

 sudo apachectl -M

3단계 - Apache 리버스 프록시 구성

이제 인터넷의 요청을 수락하고 선택한 리소스에 효과적으로 전달하도록 Apache 역방향 프록시를 구성합니다.

  1. 기본 Apache 비활성화

시작하려면 기본 Apache 가상 호스트 구성 파일을 비활성화합니다. 이는 다음 명령을 사용하여 수행할 수 있습니다.

 a2dissite 000-default.conf
  1. 새 구성 파일 만들기

가상 호스트 구성 파일을 만드는 것은 동일한 서버에서 다른 웹 응용 프로그램이나 웹 사이트를 제공하도록 Apache를 사용자 지정하는 기본 단계입니다. ㅏ 가상 호스트를 통해 Apache는 각각 고유한 구성 및 설정이 있는 여러 도메인 또는 하위 도메인을 관리할 수 있습니다.

새 가상 호스트 구성 파일을 만들려면 다음 일반 단계를 따르십시오.

이름 선택 : 일반적으로 ".conf" 확장자로 끝나는 가상 호스트 파일에 대한 설명이 포함된 이름을 선택합니다. 예: "example.com.conf" 또는 "cyberpanel.conf".

Apache의 구성 디렉토리로 이동: 대부분의 Linux 배포판에서 Apache의 구성 파일은 "/etc/apache2/sites-available/" 디렉토리에 저장됩니다. 예를 들어:

 cd /etc/apache2/sites-available/

가상 호스트 파일 만들기 : nano 또는 vi와 같은 텍스트 편집기를 사용하여 새 구성 파일을 만듭니다. 예를 들어:

 sudo nano example.com.conf

위의 명령을 입력하면 아래 파일이 나타납니다.

가상 호스트 구성 : 파일 내에서 <VirtualHost> 지시문을 사용하여 특정 가상 호스트에 대한 요청을 수락할 IP 주소 및 포트를 정의합니다. 기본 예를 들어 기본 HTTP 포트 (포트 80) 에서 모든 IP 주소를 허용하려면 다음을 사용하십시오.

 <VirtualHost *:80>    ServerName site1.com    ServerAlias www.site1.com     ServerAdmin [email protected]    ErrorLog ${APACHE_LOG_DIR}/error.log    CustomLog ${APACHE_LOG_DIR}/access.log combined    ProxyPass / http://127.0.0.1:8080/    ProxyPassReverse / http://127.0.0.1:8080/    ProxyRequests Off </VirtualHost>

구성 프로세스는 <VirtualHost> 명령으로 가상 호스트를 정의하고 Apache에 허용되는 IP 주소와 포트 번호를 지정하여 시작됩니다. 이 경우 와일드카드 문자 *가 사용되어 모든 IP 주소를 허용하고 포트 번호는 기본 HTTP 포트를 나타내는 80 으로 설정됩니다. 이후 구성에는 다음 항목이 추가로 포함됩니다.

  • ServerName : 이 지시어는 서버와 관련된 도메인 이름을 지정합니다.
  • ServerAlias: ServerAlias를 사용하면 서버에서 허용할 추가 이름을 정의할 수 있습니다.
  • ServerAdmin : ServerAdmin 지시문은 서버가 클라이언트에 반환되는 오류 메시지에 포함하는 연락처 전자 메일 주소를 설정합니다.
  • ErrorLog : ErrorLog는 Apache 저장소에서 오류가 발생한 파일의 이름을 설정합니다.
  • CustomLog: CustomLog는 Apache가 클라이언트 요청을 서버에 기록하는 파일의 이름을 설정합니다.
  • ProxyPass: ProxyPass는 원격 서버를 로컬 서버의 공간에 매핑하고 트래픽 리디렉션을 위한 대상 주소를 정의합니다. 이를 통해 Apache는 백엔드 서버에 요청을 전달하고 애플리케이션 성능 및 부하 분산을 향상시키는 리버스 프록시 역할을 할 수 있습니다.
  • ProxyPassReverse: ProxyPassReverse는 백엔드 서버의 원래 위치, 콘텐츠 위치 및 URI HTTP 응답 헤더를 프록시 서버의 정보로 다시 작성하므로 프록시 서버에 필수적입니다. 이렇게 하면 리버스 프록시가 응답을 올바르게 처리하고 백엔드 서버가 직접 인터넷 액세스에 노출되는 것을 방지할 수 있습니다.
  • ProxyRequests: ProxyRequests는 Apache HTTP 서버가 정방향 프록시로 사용되는 것을 방지하여 보안을 강화합니다. 서버를 개방형 프록시로 오용하는 것을 방지하고 잠재적인 보안 위험으로부터 보호하기 위해 ProxyPass를 사용할 때 일반적으로 "off"로 설정해야 합니다.

저장 및 종료 : 변경 사항을 저장하고 텍스트 편집기를 종료합니다.

가상 호스트 활성화 : a2ensite 명령을 사용하여 새 가상 호스트 구성을 활성화합니다.

 sudo a2ensite example.com.conf

Apache 다시 로드: 변경 사항을 적용하려면 Apache를 다시 로드하여 새 가상 호스트를 활성화합니다.

 sudo systemctl reload apache2

이러한 단계가 완료되면 이제 새 가상 호스트가 활성화되고 지정된 웹 사이트 또는 응용 프로그램을 제공할 준비가 됩니다. 변경 사항은 가상 호스트가 활성화되고 Apache가 다시 로드된 후에만 적용된다는 점에 유의해야 합니다. 또한 웹 사이트의 파일을 "DocumentRoot" 지시문에 지정된 디렉토리에 배치하여 Apache가 이 특정 가상 호스트에 대해 콘텐츠를 올바르게 제공하도록 할 수 있습니다.

구성 확인: 역방향 프록시 구성이 예상대로 작동하는지 확인합니다. 웹 브라우저에서 지정된 도메인 이름 (예: "reverse-proxy.example.com") 을 방문하면 Apache가 요청을 백엔드 서버로 적절하게 전달해야 합니다.

SSL 인증서 처리, 로드 밸런싱 또는 WebSocket 프록시 와 같은 특정 사용 사례에 따라 추가 설정을 구성해야 할 수도 있습니다. 원활한 작동을 위해 서버의 성능과 보안을 정기적으로 모니터링하십시오.

Cyberpanel에서 Apache를 리버스 프록시로 사용하는 방법

Cyberpanel에서 Apache 와 백엔드의 OpenLiteSpeed ​​통합은 OpenLiteSpeed의 속도 이점과 Apache의 풍부한 기능을 결합하여 두 세계의 장점을 모두 제공합니다. 특히 Apache를 리버스 프록시로 활용해도 ls 캐시의 성능이 저하되지 않습니다. OpenLiteSpeed ​​단독으로 사용할 때와 동일한 수준의 성능을 유지할 수 있습니다. 이 구성에서 OpenLiteSpeed는 백엔드의 요청을 처리하는 Apache로 프런트엔드 트래픽을 전달하는 역할을 계속 담당합니다. 또한 이 통합은 AlmaLinuxUbuntu 운영 체제 모두에서 지원됩니다. 이 기사를 따르면 사용자는 리버스 프록시 설정에서 Apache와 OpenLiteSpeed를 결합하여 제공되는 이점을 최대한 활용할 수 있습니다.

Cyberpanel 대시보드에 로그인하십시오 .

웹 사이트 옵션으로 이동하여 웹 사이트 만들기를 클릭하십시오.

도메인 이름, 이메일 주소 및 PHP 버전을 입력하고 Apache를 리버스 프록시로 선택합니다. 세부 정보를 입력한 후 웹사이트 만들기를 클릭합니다. 약간의 시간이 소요될 수 있으며 생성됩니다.

이 웹 사이트는 Apache에서 리버스 프록시 모드로 작동합니다. 프런트엔드에서는 Openlitespeed가 작동하고 백엔드에서는 Apache가 작동합니다. 따라서 모든 htaccess 규칙은 Cpanel을 사용하든 다른 제어판을 사용하든 예전처럼 작동합니다.

사이트가 성공적으로 생성된 것을 볼 수 있습니다.

이 사이트의 경우 웹사이트 관리자에서 이 사이트에 대한 Apache 구성을 관리할 수 있습니다. 관리를 클릭하십시오

일단 여기 있으면 Apache Manager를 클릭하십시오 .

그런 다음 순수한 Openlitespeed로 전환할 수도 있습니다. 따라서 이 웹사이트의 백엔드에서 Apache를 사용하지 않기로 결정했다고 가정해 보겠습니다. 순수 Openlitespeed로 전환 하려면 PHP 버전을 선택하고 순수 Openlitespeed로 전환을 클릭하십시오. OpenLitespeed를 사용하는 경우 Apache도 사용하도록 변환할 수 있습니다.

이들은 Apache 구성입니다. 무언가를 편집하고 싶은 경우 쉽게 편집할 수 있지만 여기에서 무언가 잘못되어 웹사이트 작동이 중지될 수 있으므로 현재 수행 중인 작업을 알고 있어야 합니다.

Apache 구성에서 PHP-FPM을 사용하고 있으므로 사용 중인 PHP-FPM 구성입니다.

PHP 구성의 경우 PHP이동하여 PHP 구성 편집을 클릭합니다 . PHP 구성을 편집하려는 경우.

Apache를 사용하는 경우 Php 구성도 편집해야 하므로 Apache가 설치되어 있으면 이 URL이 표시됩니다.

기본적으로 Litespeed Php에 대한 구성을 편집할 수 있습니다. Apache에 대한 구성을 편집하려면 EDIT APACHE CONFIGURATIONS를 클릭하십시오 .

EDIT APACHE CONFIGURATIONS를 클릭한 후 post_max_size, upload_max_filesize, max_execution_time 등과 같은 Litespeed 구성으로 무엇이든 사용할 수 있습니다.

구성을 편집한 후 변경 사항 저장을 클릭하십시오.

마찬가지로 고급 편집도 사용할 수 있습니다.

마찬가지로 Apache용 PHP 확장을 설치할 수 있습니다. PHP-> 확장 설치를 클릭하십시오.

Apache를 사용하는 경우 APACHE 확장도 관리 해야 하므로 Apache가 설치되어 있으면 이 URL이 표시됩니다.  

기본적으로 Litespeed Php용 확장 프로그램을 설치할 수 있습니다. Apache용 확장을 설치하려면 APACHE 확장 관리를 클릭하십시오 .

관련된 컨텐츠

Apache와 NGINX 에 대한 가이드도 확인할 수 있습니다. 성능 측면에서 누가 승리합니까?