웹사이트 검색

mod_proxy 확장을 사용하여 Apache HTTP 서버를 리버스 프록시로 사용하는 방법


소개

Apache는 매우 광범위한 강력한 확장에 대한 액세스와 함께 제공되는 검증된 HTTP 서버입니다. 리버스 프록시를 실행하는 측면에서 선택이 아닌 것처럼 보일 수 있지만 사용 가능한 풍부한 기능 세트를 위해 이미 Apache에 의존하고 있는 시스템 관리자는 이를 애플리케이션 서버에 대한 게이트웨이로 사용할 수도 있습니다. 대부분의 경우 이는 서버 설정에서 추가 계층을 제거하거나 연결을 리디렉션하기 위해 또 다른 도구를 사용해야 하는 것으로 해석됩니다.

이 DigitalOcean 기사에서는 Ubuntu 13에서 Apache를 설정하고 이를 리버스 프록시로 사용하여 들어오는 연결을 환영하고 동일한 네트워크에서 실행 중인 애플리케이션 서버로 리디렉션하는 방법을 살펴보겠습니다. 이를 위해 mod_proxy 확장 및 기타 여러 관련 Apache 모듈을 사용하고 작업할 것입니다.

용어 사전

1. 아파치

2. mod_proxy를 사용하여 리버스 프록시로 작동하는 Apache

3. Apache 및 mod_proxy 설치

  1. 운영 체제 업데이트
  2. 필수 빌드 도구 얻기
  3. 모듈 및 종속성 가져오기

4. 프록시 연결에 Apache 구성

  1. 모듈 활성화
  2. 기본 구성 수정
  3. 로드 밸런싱 활성화
  4. SSL 지원 활성화
  5. Apache 다시 시작

아파치

Apache HTTP 서버는 아마도 현존하는 가장 유명하고 대중적인 웹 서버이기 때문에 소개가 필요하지 않습니다. 다양한 플랫폼과 설정에서 Apache를 매우 쉽게 실행할 수 있습니다. 이 응용 프로그램은 다양한 종류의 작업(규칙 기반 URL 재작성을 위한 mod_rewrite)을 처리하기 위한 많은 타사 모듈과 함께 제공되며 그 중 하나는 현재 상대적으로 무시되고 있지만 mod_proxy: 구현할 Apache 모듈입니다. 백엔드에서 실행되는 서버를 위한 프록시(또는 게이트웨이).

팁: 일부 기사에 따르면 Apache의 이름은 서버의 "패치된\ 특성, 즉 응용 프로그램 패치(또는 모듈)의 모음에서 유래했습니다.

참고: Apache에 대해 자세히 알아보려면 주제에 대한 Wikipedia 항목인 Apache HTTP Server를 확인하십시오.

mod_proxy를 사용하여 리버스 프록시로 작동하는 Apache

mod_proxy는 연결을 리디렉션하기 위한 Apache 모듈입니다(예: 연결을 통과하는 게이트웨이). 다른 모듈과 마찬가지로 사용할 수 있으며 구성은 다른 모듈과 마찬가지로 매우 기본적(또는 표준적)입니다. mod_proxy는 단일 모듈이 아니라 각각 새로운 기능 세트를 제공하는 모듈 모음입니다.

이러한 모듈 중 일부는 다음과 같습니다.

  • mod_proxy: 연결을 관리하고 리디렉션하는 Apache용 기본 프록시 모듈입니다.\n
  • mod_proxy_http:이 모듈은 HTTP 및 HTTPS 프로토콜에 대한 프록시 기능을 구현합니다.\n
  • mod_proxy_ftp: 이 모듈은 FTP 프로토콜을 제외하고 동일합니다.\n
  • mod_proxy_connect: 이것은 SSL 터널링에 사용됩니다.
  • mod_proxy_ajp: AJP 프로토콜 작업에 사용됩니다.\n
  • mod_proxy_wstunnel: 웹 소켓(예: WS 및 WSS) 작업에 사용됩니다.
  • mod_proxy_balancer: 클러스터링 및 부하 분산에 사용됩니다.\n
  • mod_cache: 캐싱에 사용됩니다.
  • mod_headers: HTTP 헤더를 관리하는 데 사용됩니다.\n
  • mod_deflate: 압축에 사용됩니다.

참고: Apache 및 mod_proxy에 대해 자세히 알아보려면 여기에서 해당 주제에 대한 공식 Apache 문서를 확인할 수 있습니다.

Apache 및 mod_proxy 설치

참고: Apache가 이미 설치되어 있거나 사용 방법을 알고 있을 가능성이 있으므로 여기에 제공된 지침은 간략하게 유지됩니다. 그럼에도 불구하고 아래 단계를 따르면 몇 분 만에 Apache를 실행하는 새로운 Ubuntu VPS를 얻을 수 있습니다.

운영 체제 업데이트

가상 서버 준비부터 시작하겠습니다. 먼저 사용 가능한 기본 구성 요소를 업그레이드하여 모든 것이 최신 상태인지 확인합니다.

소프트웨어 소스 목록을 업데이트하고 날짜가 지정된 응용 프로그램을 업그레이드합니다.

  1. aptitude update
  2. aptitude -y upgrade

필수 빌드 도구 얻기

계속해서 애플리케이션 구축을 위한 필수 패키지인 build-essential을 가져오겠습니다. 이 패키지에는 소스에서 특정 항목을 설치하는 데 필요한 도구가 포함되어 있습니다.

다음 명령을 실행하여 build-essential 패키지를 설치합니다.

  1. aptitude install -y build-essential

모듈과 의존성 얻기

다음으로 모듈과 종속성을 가져올 것입니다.

다음 명령을 실행하여 설치합니다.

  1. aptitude install -y libapache2-mod-proxy-html libxml2-dev

프록시 연결에 Apache 구성

모듈 활성화

Apache를 구성하기 전에 이 자습서에서 사용하거나 나중에 유용할 수 있는 필수 모듈을 활성화할 것입니다.

먼저 모든 모듈이 올바르게 설치되었고 활성화할 준비가 되었는지 확인합니다.

다음 명령을 실행하여 사용 가능한 Apache 모듈 목록을 가져옵니다.

  1. a2enmod
  2. # You will be presented with an output similar to:
  3. # Your choices are: access_compat actions alias allowmethods asis auth_basic auth_digest auth_form authn_anon authn_core authn_dbd authn_dbm authn_file authn_socache authnz_ldap authz_core authz_dbd authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex buffer cache cache_disk cache_socache cgi cgid charset_lite data dav dav_fs dav_lock dbd deflate dialup dir dump_io echo env expires ext_filter file_cache filter headers heartbeat heartmonitor include info lbmethod_bybusyness lbmethod_byrequests lbmethod_bytraffic lbmethod_heartbeat ldap log_debug log_forensic lua macro mime mime_magic mpm_event mpm_itk mpm_prefork mpm_worker negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_express proxy_fcgi proxy_fdpass proxy_ftp proxy_html proxy_http proxy_scgi proxy_wstunnel ratelimit reflector remoteip reqtimeout request rewrite sed session session_cookie session_crypto session_dbd setenvif slotmem_plain slotmem_shm socache_dbm socache_memcache socache_shmcb speling ssl status substitute suexec unique_id userdir usertrack vhost_alias xml2enc
  4. # Which module(s) do you want to enable (wildcards ok)?

원하는 모듈을 선택하라는 메시지가 표시되면 모듈 이름이 나열된 아래 줄을 전달할 수 있습니다.

모듈 목록:

  1. proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html

또는 다음 명령을 실행하여 모듈을 하나씩 활성화할 수 있습니다.

  1. a2enmod proxy
  2. a2enmod proxy_http
  3. a2enmod proxy_ajp
  4. a2enmod rewrite
  5. a2enmod deflate
  6. a2enmod headers
  7. a2enmod proxy_balancer
  8. a2enmod proxy_connect
  9. a2enmod proxy_html

참고: 일부 모듈은 기본적으로 활성화되어 있을 수 있습니다. 활성화를 두 번 시도하면 활성화됩니다.

기본 구성 수정

이 단계에서는 "프록시를 설정하기 위해 /etc/apache2/sites-enabled 내부의 기본 구성 파일 000-default.conf를 수정하는 방법을 살펴보겠습니다. ” 기능.

nano 텍스트 편집기를 사용하여 기본 Apache 가상 호스트를 편집하려면 다음 명령을 실행하십시오.

  1. nano /etc/apache2/sites-enabled/000-default.conf

여기에서는 mod_virtualhostmod_proxy를 함께 사용하여 프록시 가상 호스트를 정의합니다.

아래 구성 블록을 복사하여 붙여넣고 필요에 맞게 수정합니다.

    <VirtualHost *:*>
        ProxyPreserveHost On
        
        # Servers to proxy the connection, or;
        # List of application servers:
        # Usage:
        # ProxyPass / http://[IP Addr.]:[port]/
        # ProxyPassReverse / http://[IP Addr.]:[port]/
        # Example: 
        ProxyPass / http://0.0.0.0:8080/
        ProxyPassReverse / http://0.0.0.0:8080/
        
        ServerName localhost
    </VirtualHost>

CTRL+X를 누르고 Y로 확인하여 저장하고 종료합니다.

참고: 가상 호스트 구성에 대해 자세히 알아보려면 여기를 클릭하여 주제에 대한 자세한 Apache 설명서를 확인할 수 있습니다.

로드 밸런싱 활성화

백엔드 서버가 여러 개인 경우 프록시할 때 연결을 분산하는 좋은 방법은 Apache의 로드 밸런싱 기능을 사용하는 것입니다.

이전 단계와 같이 가상 호스트 설정 편집을 시작하되 이번에는 아래 구성 예를 사용합니다.

    <Proxy balancer://mycluster>
        # Define back-end servers:

        # Server 1
        BalancerMember http://0.0.0.0:8080/
        
        # Server 2
        BalancerMember http://0.0.0.0:8081/
    </Proxy>
    
    <VirtualHost *:*>
        # Apply VH settings as desired
        # However, configure ProxyPass argument to
        # use "mycluster" to balance the load
        
        ProxyPass / balancer://mycluster
    </VirtualHost>

SSL 리버스 프록시 지원 활성화

SSL 연결 및 인증서를 처리하는 경우 아래 설정으로 보조 가상 호스트도 활성화해야 합니다.

다음 구성 옵션을 사용하여 이전 단계의 단계를 반복합니다.

    Listen 443
     
    NameVirtualHost *:443
    <VirtualHost *:443>
    
        SSLEngine On
        
        # Set the path to SSL certificate
        # Usage: SSLCertificateFile /path/to/cert.pem
        SSLCertificateFile /etc/apache2/ssl/file.pem
        
        
        # Servers to proxy the connection, or;
        # List of application servers:
        # Usage:
        # ProxyPass / http://[IP Addr.]:[port]/
        # ProxyPassReverse / http://[IP Addr.]:[port]/
        # Example: 
        ProxyPass / http://0.0.0.0:8080/
        ProxyPassReverse / http://0.0.0.0:8080/
        
        # Or, balance the load:
        # ProxyPass / balancer://balancer_cluster_name
    
    </VirtualHost>

아파치 재시작

구성에 만족하면 변경 사항을 적용하려면 클라우드 서버를 다시 시작해야 합니다.

다음 명령을 실행하여 Apache를 다시 시작합니다.

  1. service apache2 restart

그리고 그게 다야!

이제 VPS를 방문할 수 있으며 Apache는 백엔드 애플리케이션 서버에 대한 리버스 프록시 연결을 수행합니다.