아파치 리버스 프록시 설정방법

리버스 프록시(Reverse Proxy)

클라이언트(사용자)의 요청을 받아 이를 대신해서 서버에 전달하고, 서버로부터 받은 응답을 다시 클라이언트에게 전달하는 중개 역할을 하는 서버입니다. 일반적으로 프록시 서버는 클라이언트의 요청을 서버에 전달하지만, 리버스 프록시는 서버의 앞단에서 클라이언트의 요청을 처리하고 이를 적절한 백엔드 서버에 분배합니다.

리버스 프록시는 다음과 같은 목적을 위해 사용됩니다:

  1. 로드 밸런싱: 여러 서버에 트래픽을 분산하여 한 서버에 부하가 집중되는 것을 방지하고, 시스템의 성능을 최적화합니다.
  2. 보안 강화: 클라이언트는 실제 서버와 직접 연결되지 않고, 리버스 프록시를 통해 연결되기 때문에 서버의 실제 IP 주소를 숨길 수 있습니다. 또한 리버스 프록시는 SSL 암호화 및 인증서를 처리할 수도 있습니다.
  3. 캐싱: 리버스 프록시는 서버로의 요청을 캐시할 수 있어, 동일한 요청에 대해 빠르게 응답하고 서버 부하를 줄일 수 있습니다.
  4. 웹 방화벽 기능: 리버스 프록시는 잠재적 위협을 차단하고 악성 요청을 필터링하여 서버를 보호할 수 있습니다.

대표적인 리버스 프록시 소프트웨어로는 Nginx, Apache HTTP Server, HAProxy 등이 있습니다.

리눅스 아파치 리버스 프록시(Reverse Proxy) 설정방법

아파치 웹 서버에서 리버스 프록시를 설정하려면 mod_proxy 모듈을 활성화하고, 가상 호스트 파일 또는 메인 설정 파일에 리버스 프록시 관련 설정을 추가해야 합니다. 다음은 기본적인 리버스 프록시 설정 방법입니다.

1. mod_proxy 모듈 활성화

리버스 프록시 기능을 사용하려면 mod_proxymod_proxy_http 모듈을 활성화해야 합니다.

터미널에서 다음 명령어를 실행합니다.

sudo a2enmod proxy
sudo a2enmod proxy_http

2. 아파치 설정 파일 수정

리버스 프록시 설정은 주로 가상 호스트 설정 파일에서 이루어집니다. 설정 파일은 /etc/apache2/sites-available/000-default.conf와 같은 위치에 있습니다.

가상 호스트 파일을 열어 편집합니다.

sudo nano /etc/apache2/sites-available/000-default.conf

아래와 같은 리버스 프록시 설정을 추가합니다.

<VirtualHost *:80>
    ServerName your-domain.com

    # 리버스 프록시 설정
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/

    # 필요시 SSL을 사용하려면 아래 설정을 추가 (SSL 설정된 가상 호스트에서)
    # SSLEngine On
    # SSLCertificateFile /path/to/cert.pem
    # SSLCertificateKeyFile /path/to/key.pem
</VirtualHost>

위 설정에서:

  • ProxyPass는 클라이언트 요청을 내부 서버로 전달하는 규칙입니다.
  • ProxyPassReverse는 내부 서버에서 클라이언트로의 응답을 프록시 서버를 통해 전달하는 규칙입니다.
  • 예시에서는 127.0.0.1:8080에 있는 서버로 요청을 프록시하고 있습니다.

3. 설정 테스트 및 아파치 재시작

설정에 문제가 없는지 확인한 후, 아파치 서버를 재시작합니다.

sudo apache2ctl configtest
sudo systemctl restart apache2

이제 아파치 서버가 리버스 프록시 역할을 하게 됩니다.

윈도우 아파치 리버스 프록시(Reverse Proxy) 설정방법

윈도우에서 아파치를 설치하고 mod_proxy 모듈을 활성화하는 방법 및 이를 확인하는 방법은 다음과 같습니다.

1. 아파치 설치 폴더 확인

윈도우에서 아파치는 보통 C:\Apache24와 같은 경로에 설치됩니다. 아파치 설치 경로의 conf 폴더에서 설정 파일을 편집합니다. (xampp, apm 등 통합모듈 설치는 별도 해당폴더 참고)

2. mod_proxy 모듈 활성화

httpd.conf 파일을 열고, mod_proxy 관련 모듈이 활성화되었는지 확인합니다.

방법:

  1. C:\Apache24\conf\httpd.conf 파일을 텍스트 편집기(메모장 또는 다른 편집기)로 엽니다.
  2. 파일에서 다음 줄을 찾아 확인합니다.
# LoadModule proxy_module modules/mod_proxy.so
# LoadModule proxy_http_module modules/mod_proxy_http.so
  1. 주석(#)이 앞에 붙어 있으면 이를 제거하여 모듈을 활성화합니다.
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
  1. 변경을 저장하고 파일을 닫습니다.

3. 아파치 서버 재시작

설정이 적용되도록 아파치 서버를 재시작합니다.

  1. 명령 프롬프트를 열고 관리자 권한으로 실행합니다.
  2. 다음 명령어로 아파치를 재시작합니다.
httpd -k restart

4. 모듈 활성화 확인 방법

  1. 명령 프롬프트에서 아래 명령을 입력하여 로드된 모듈 목록을 확인할 수 있습니다.
httpd -M
  1. 출력된 목록에서 proxy_moduleproxy_http_module이 나오는지 확인합니다.

출력에 다음과 같은 항목이 있으면 모듈이 정상적으로 활성화된 것입니다.

proxy_module (shared)
proxy_http_module (shared)

이 방법으로 mod_proxy 모듈이 활성화되었는지 확인할 수 있습니다.

아파치 vhosts.conf 파일을 아래와 같이 수정한다.

위와같이 확인할수있습니다. 예제는 n8n을 접속했는데 리버스 프록시를 활용해 ssl 인증접속을 적용하기 편리합니다.