Apache HTTP 서버

정의 대기 중입니다.

일반적으로 Apache로 알려진 Apache HTTP 서버는 HTTP/S를 통해 웹 콘텐츠를 제공하는 무료 오픈 소스 크로스 플랫폼 웹 서버 소프트웨어입니다. Apache Software Foundation에서 개발 및 유지 관리하며, 세계에서 가장 오래되고 널리 사용되는 웹 서버 중 하나입니다. Apache는 특정 포트(일반적으로 HTTP의 경우 포트 80, HTTPS의 경우 443)에서 들어오는 HTTP 요청을 수신 대기하여 작동합니다. 요청이 도착하면 Apache는 구성 파일(주로 httpd.conf 및 거기서 포함된 파일)을 기반으로 요청을 처리합니다. 파일 시스템에서 정적 파일을 직접 제공하거나 mod_php, mod_wsgi 또는 mod_proxy와 같은 모듈을 사용하여 백엔드 애플리케이션 또는 스크립트와 상호 작용하여 동적으로 콘텐츠를 생성할 수 있습니다. Apache의 아키텍처는 모듈식이므로 관리자는 모듈을 로드하거나 언로드하여 기능을 활성화하거나 비활성화할 수 있습니다. 핵심 기능에는 가상 호스트(단일 서버에서 여러 웹사이트 제공) 처리, 액세스 제어 관리, 인증 및 권한 부여 구현, 요청 로깅, 보안 연결을 위한 SSL/TLS 암호화 지원이 포함됩니다. 동시 연결을 처리하기 위해 프로세스 기반 또는 스레드 기반 멀티프로세싱 모듈(MPM)을 사용하며, 일반적인 MPM으로는 prefork(프로세스 기반), worker(하이브리드), event(keep-alive 연결에 최적화)가 있습니다. 유연성, 광범위한 문서, 대규모 커뮤니티 지원이 지속적인 인기에 기여했습니다.

        graph LR
  Center["Apache HTTP 서버"]:::main
  Rel_rest_apis["rest-apis"]:::related -.-> Center
  click Rel_rest_apis "/terms/rest-apis"
  Rel_css3["css3"]:::related -.-> Center
  click Rel_css3 "/terms/css3"
  Rel_typescript["typescript"]:::related -.-> Center
  click Rel_typescript "/terms/typescript"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 5살도 이해할 수 있게 설명

Apache는 인터넷을 위한 매우 빠른 웨이터와 같습니다. 컴퓨터가 웹페이지를 요청하면 Apache는 빠르게 해당 페이지를 찾아 당신에게 가져다줍니다.

🤓 Expert Deep Dive

Apache의 멀티프로세싱 모듈(MPM)은 동시성 처리 전략의 핵심입니다. prefork MPM은 비스레드 방식의 사전 포크된 프로세스 모델을 사용하여 요청을 격리하여 안정성을 제공하지만 더 많은 메모리를 소비합니다. worker MPM은 각 자식 프로세스 내에서 여러 스레드를 사용하여 성능을 향상시키고 메모리 사용량을 줄이지만 잠재적인 스레드 안전성 문제를 야기합니다. worker의 진화 버전인 event MPM은 keep-alive HTTP 연결에 최적화되어 있으며, 리스너 스레드를 할당하여 새 연결을 수락하고 워커 스레드가 활성 요청을 처리하여 높은 부하에서 확장성을 크게 향상시킵니다. 동적으로 로드 가능한 모듈(DLM)을 통한 Apache의 확장성은 심층적인 사용자 정의를 가능하게 하지만, 모듈 호환성 및 잠재적 충돌은 신중한 관리가 필요합니다. 구성 시스템은 강력하지만, 수많은 가상 호스트와 복잡한 액세스 제어 규칙이 있는 대규모 배포에서는 복잡해질 수 있습니다. 보안은 RequireAllow/Deny와 같은 지시어를 통해 관리되며, 강력한 로깅 기능은 모니터링 및 디버깅에 필수적입니다.

📚 출처