소개
서드파티 확장은 매우 유용한 추가 기능입니다. 이를 통해 Apache HTTP와 같은 서버를 구성하고 작업하는 경험이 훨씬 더 간단해지고 수월해집니다. 필요한 경우 Apache에서 이러한 모듈 중 일부를 사용하여 역방향 프록시(reverse proxy)를 실행할 수도 있습니다. 서버 설정에서 레이어를 제거하거나 모듈을 사용하여 연결을 리디렉션할 수 있습니다.
이 가이드에서는 Apache와 mod_proxy 등 이 서버 플랫폼과 관련된 다양한 모듈에 대해 논의할 것입니다. 또한 이를 어떻게 역방향 프록시로 사용하여 백엔드 애플리케이션 서버로 연결을 리디렉션할 수 있는지 알아보겠습니다.
Apache란 무엇인가요?
Apache는 웹 관련 목적으로 매우 흔히 사용되는 HTTP 서버입니다. 하지만 다양한 이유로 여러 플랫폼에서 사용할 수 있습니다. 단계별 튜토리얼을 따라 Ubuntu에 Apache 웹 서버를 설치할 수 있습니다. 또한, Let’s Encrypt로 Apache 서버를 보호하는 방법을 배우려면 이 튜토리얼을 따르십시오. Ubuntu 20.04에서 Apache 가상 호스트를 설정하는 방법.
외부 모듈의 도움을 받아 Apache의 기능과 구현을 더 자세히 탐색할 수 있습니다. 이들은 연결 및 구성과 관련된 다양한 작업을 수행하는 데 사용할 수 있는 서드파티 모듈입니다. 예를 들어, mod_rewrite 모듈을 사용하여 규칙 기반 URL 재작성을 수행할 수 있습니다. 이러한 모듈 중 또 다른 하나는 mod_proxy입니다. 후자의 모듈은 커뮤니티에서 크게 활용되지 않고 있습니다. 주로 많은 사람들이 그 기능과 응용의 범위를 알지 못하기 때문입니다. 이름에서 알 수 있듯이 Mod_proxy는 백엔드 서버를 위한 게이트웨이나 프록시를 구축하는 데 도움을 줄 수 있습니다.
그럼 mod_proxy에 대해 자세히 알아보고, 이를 역방향 프록시로 사용하는 방법을 살펴보겠습니다.
Mod_proxy: Apache를 역방향 프록시로 사용하기
짐작하시겠지만, mod_proxy는 모듈입니다. 이는 다양한 연결을 형성하고 리디렉션하는 데 사용할 수 있는 Apache의 모듈입니다. 시스템의 다른 모듈과 마찬가지로 활성화하고 구성할 수도 있습니다. mod_proxy의 독특한 점은 단 하나의 모듈이 아니라는 것입니다. 사실, 아래에서 볼 수 있듯이 여러 다양한 모듈의 모음으로 구성되어 있습니다. 이들 각각은 고유한 기능을 수행합니다. 이러한 방식으로 mod_proxy는 기능면에서 매우 다양한 다양성을 제공합니다.
다음 mod_proxy 모듈들을 살펴보십시오:
mod_proxy
이것은 메인 프록시 모듈입니다. Apache에서 이 모듈을 사용하여 다양한 연결을 구성하고 관리할 수 있습니다. 또한 연결을 리디렉션하는 데 도움을 줄 수 있습니다.
mod_proxy_http
이름에서 알 수 있듯이, 이 모듈은 HTTP 및 HTTPS 프로토콜을 다룹니다. 이 모듈을 사용하여 이러한 프로토콜의 프록시 기능을 구현할 수 있습니다.
mod_proxy_ftp
Mod_proxy_ftp는 FTP 프로토콜을 다룰 때 작동합니다.
mod_proxy_connect
이 모듈은 SSL 터널링을 수행할 때 유용합니다.
mod_proxy_ajp
AJP 프로토콜로 작업할 때 mod_proxy_ajp를 사용할 수 있습니다.
mod_proxy_wstunnel
이것은 WS 및 WSS와 같은 웹 소켓으로 작업할 때 유용합니다.
mod_proxy_balancer
로드 밸런싱 및 클러스터링 기능에 액세스하려는 경우 이 모듈을 사용할 수 있습니다.
mod_cache
mod_cache 모듈은 예상대로 캐싱 목적으로 유용합니다.
mod_headers
이 모듈을 사용하여 HTTP 프로토콜을 통해 생성하는 헤더를 관리할 수 있습니다.
mod_deflate
이 모듈은 압축 목적으로 사용됩니다.
이러한 모듈에 대해 더 자세히 알고 싶다면, 공식 Apache 웹사이트를 방문하십시오. 공식 문서에서는 mod_proxy 및 Apache 자체에 대한 더 많은 정보를 제공합니다.
Apache 및 mod_proxy를 설치하는 방법은 무엇인가요?
시스템에 Apache 및 mod_proxy를 설치하기 위해 쉽게 따라할 수 있는 단계는 다음과 같습니다:
- 서버 준비
가장 먼저 클라우드 서버가 준비되었는지 확인해야 합니다. 이를 위해 운영 체제 및 관련 소프트웨어를 최신 버전으로 업데이트해야 합니다.
다음 명령을 사용하여 애플리케이션을 업그레이드하십시오:
|
1 2 3 |
apt install aptitude aptitude update aptitude -y upgrade |
- 필수 패키지 설치
서버가 준비되면 필수 도구를 갖추어야 합니다. 이를 위해 build-essential 패키지를 설치해야 합니다. 이 패키지는 소스에서 무언가를 설치하는 데 필요한 모든 기본 도구로 구성되어 있습니다. 다음 명령어로 설치할 수 있습니다:
|
1 |
aptitude install -y build-essential |
- 모듈 및 종속성 가져오기
마지막으로 모듈과 종속성을 설치해야 합니다. 다음 명령어를 실행하여 설치할 수 있습니다:
|
1 |
aptitude install -y apache2 apache2-bin libxml2-dev |
모듈 활성화: 프록시 연결로 Apache를 구성하는 방법은 무엇인가요?
Apache를 구성하기 전에 먼저 모듈을 활성화해야 합니다. 이 모듈들은 필요한 구성을 설정하고 다양한 작업을 수행하는 데 도움이 됩니다.
우선, 시스템에서 이미 작동 중인 모듈이 무엇인지 확인해야 합니다. 그뿐만 아니라 모든 모듈이 올바르게 설치되었고 활성화할 수 있는지 확인해야 합니다. 이 명령어를 실행하면 Apache 서버에서 사용할 수 있는 모든 모듈이 표시됩니다:
|
1 |
a2enmod |

보시다시피, 응답에는 사용 가능한 모든 모듈이 상세한 목록 형태로 표시됩니다. 이 목록을 살펴보고 활성화할 모듈을 결정하세요. Apache에 이를 알리려면 다음 명령어를 사용하고 예시 대신 원하는 모듈을 입력하면 됩니다:
|
1 |
proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html lbmethod_byrequests |
반면에 각 모듈을 개별적으로 활성화할 수도 있습니다. 그렇게 하려면 다음 명령어들을 사용합니다:
|
1 2 3 4 5 6 7 8 9 10 |
a2enmod proxy a2enmod proxy_http a2enmod proxy_ajp a2enmod rewrite a2enmod deflate a2enmod headers a2enmod proxy_balancer a2enmod proxy_connect a2enmod proxy_html a2enmod lbmethod_byrequests |
일부 모듈은 서버에서 기본적으로 활성화되어 있을 수 있습니다. 활성화 여부를 어떻게 확인하는지 궁금할 수 있습니다. 원하는 모듈이 활성화되어 있는지 확인하려면 두 번 활성화를 시도해 볼 수 있습니다. 이렇게 하면 모듈이 확실히 활성화됩니다.
- 기본 구성 설정 변경
먼저 기본 구성 설정을 변경해야 합니다. 그러려면 기본 구성 파일인 000-default.conf에 액세스해야 합니다. 이 파일은 /etc/apache2/sites-enabled 내에 위치해 있습니다. 프록시 기능을 수행할 수 있도록 이 파일을 수정해야 합니다.
기본 가상 호스트를 편집하기 위해 nano 텍스트 편집기를 여는 것부터 시작합니다. 다음 명령어를 실행하여 이 작업을 수행할 수 있습니다:
|
1 |
nano /etc/apache2/sites-enabled/000-default.conf |
여기서는 mod_virtual host와 mod_proxy를 통칭하여 프록시 가상 호스트라고 부르겠습니다. 이제 다음 구성 설정을 적용할 수 있습니다. 시스템과 요구 사항에 맞게 필요한 변경을 수행할 수 있습니다:
|
1 2 3 4 5 6 7 |
<VirtualHost *:*> ProxyPreserveHost On ProxyPass / http://0.0.0.0:8080/ ProxyPassReverse / http://0.0.0.0:8080/ ServerName localhost </VirtualHost> |
Ctrl + X를 누르고 Y를 입력하여 확인하면 저장하고 종료할 수 있습니다.
- 로드 밸런싱 기능 활성화
로드 밸런싱 은 프록시의 연결을 효과적으로 분산하는 데 도움이 됩니다. 이는 단일 서버 대신 여러 백엔드 애플리케이션 서버를 사용할 때 매우 유용한 개념입니다. 로드 밸런싱 기능은 연결 또는 '부하(load)'를 분산해 줍니다.
이 기능을 활성화하려면 이 가이드에서 앞서 언급한 단계를 반복해야 합니다. 다만, 가상 호스트를 설정할 때 다음 구성 설정을 사용해야 합니다:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<VirtualHost *:*> <Proxy balancer://mycluster> # 백엔드 서버 정의: # 서버 1 BalancerMember http://0.0.0.0:8080/ # 서버 2 BalancerMember http://0.0.0.0:8081/ </Proxy> # 원하는 대로 VH 설정 적용 # 단, 부하 분산을 위해 ProxyPass 인수를 # "mycluster"를 사용하도록 구성 ProxyPass / balancer://mycluster </VirtualHost> |
- 역방향 프록시 지원 활성화
만약 SSL 연결 및 인증서를 다루고 있다면 가상 호스트가 역방향 프록시를 지원하도록 설정해야 합니다. 이 보조 가상 호스트는 다음과 같은 설정을 가져야 합니다. 이전 단계의 지침을 수행해야 합니다. 구성 옵션을 아래에 언급된 옵션으로 바꾸기만 하면 됩니다:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<VirtualHost *:443> SSLEngine On # SSL 인증서 경로 설정 # 사용법: SSLCertificateFile /path/to/cert.pem SSLCertificateFile /etc/apache2/ssl/file.pem # 연결을 프록시할 서버 또는; # 애플리케이션 서버 목록: # 사용법: # ProxyPass / http://[IP 주소]:[포트]/ # ProxyPassReverse / http://[IP 주소]:[포트]/ # 예시: ProxyPass / http://0.0.0.0:8080/ ProxyPassReverse / http://0.0.0.0:8080/ # 또는 부하 분산: # ProxyPass / balancer://balancer_cluster_name </VirtualHost> |
위의 구성이 작동하려면 SSL 모듈도 활성화해야 합니다:
|
1 |
sudo a2enmod ssl |
- Apache 재시작
모든 구성이 완료되었습니다. 마지막으로 변경 사항을 적용하기 위해 Apache 서버를 재시작할 수 있습니다. 다음 명령을 실행하여 Apache를 재시작할 수 있습니다:
|
1 |
service apache2 restart |
결론
짜잔! Apache 서버에 역방향 프록시 게이트웨이를 성공적으로 설정했습니다. 이제 Apache가 들어오는 연결을 백엔드의 애플리케이션 서버로 리디렉션합니다.
이 방법의 장점은 구성 과정에 노력이 거의 들지 않고 매우 간단하다는 것입니다. 이제 정확한 단계를 알았으니 Apache에서 역방향 프록시를 설정하는 데 전혀 어려움이 없을 것입니다.
즐거운 컴퓨팅 되세요!

댓글
아직 댓글이 없습니다. 첫 번째로 작성해 보세요.