Apache HTTP Server는 오픈 소스 소프트웨어 그룹인 아파치 소프트웨어 재단에서 만드는 웹 서버 프로그램이다. 팀 버너스 리가 만든 최초의 웹 서버 프로그램인 "NCSA HTTPd"를 기반으로 만들어졌다.
아파치는 확장성이 상당히 좋은데, 모듈이라는 개념으로 수많은 기능을 덧붙일 수 있다. 이 모듈을 통해 다른 프로그램과의 연동도 가능하다. 이 때문에 여러가지 서버 사이드 프로그래밍 언어나 DBMS와도 궁합이 잘 맞았는데, 초창기에는 Perl이 대세였고, PHP가 그 뒤를 이었다. 바로 PHP 모듈을 통해 PHP를 실행할 수도 있지만, 주로 속도 향상을 위해 PHP-FPM을 통해 PHP를 연결해서 사용한다. 좀 더 고성능을 원하는 사람은 HHVM을 쓴다. 그리고 오픈소스 DBMS인 MySQL이 나오자, Apache+PHP+MySQL을 통틀어 "APM"이라고 통칭하면서 웹 서버를 돌리기 위한 기본 3종 세트 비스무레하게 되었다. 물론 다른 언어와 다른 DBMS도 지원하지만, 저 조합이 가장 인지도가 높다. JSP의 경우에도 설정이 조금 귀찮아지지만 Tomcat과 연동하여 돌릴 수 있다.
라이선스는 GPL이 아닌 자체 라이선스를 쓴다. 아파치 라이선스 2.0을 따르는데, 아파치 소프트웨어 재단에서 만들었다는 사실을 밝히고 아파치 라이선스를 따르면 자유롭게 수정 및 재배포가 가능하다. 소스 공개 강제 사항도 없는 자유로운 라이선스다.
그러나 2.2 버전대에서 너무 무겁다는 평이 많아졌고, 빠른 속도를 내세운 NGINX라는 웹 서버 프로그램이 새로 나오면서 아파치의 위기가 왔다. 아파치는 Event MPM을 탑재하여 속도를 크게 개선한 2.4 버전을 내놓으면서 여기에 대응하고 있다.
가벼우면서도 강력한 프로그램을 목표로 러시아에서 개발되어 미국에서 운영 중인 오픈 소스 웹 서버 프로그램이다. '엔진엑스'라고 읽는다. HTTP와 리버스 프록시, IMAP/POP3 등의 서버 구동이 가능하다. Java 서블릿은 대개 Apache의 Tomcat을 연동해서 구동하고, PHP의 경우 PHP-FPM(FastCGI Process Manager)을 연동해서 구동한다.
NGINX는 HTTP와 HTTP/2를 지원하고 있으며, HTTP/3는 개발중에 있다. 클라우드플레어에서는 자체적으로 개발한 NGINX 확장모듈을 이용하여 HTTP/3 상용 서비스를 하고 있으며, NGINX 측에서도 자체 HTTP/3를 베타테스트 중에 있다.
구조적으로는 Apache HTTPd에서 사용하는 요청 당 스레드 혹은 프로세스 기반의 구조 대신, 비동기 이벤트 기반의 구조로 작동한다. 이로 인해서 서버 부하시 성능 예측이 쉽다. 덤으로 10,000개의 동시 접속을 하면, 그 10,000개에 드는 메모리 점유는 평균 2.5MB다. 리눅스 기반으로 구축하는 웹 서버의 경우, 기존의 LAMP(Linux + Apache + MySQL/MariaDB + PHP/Python/Perl)에서 Apache 대신 (E)NGINX로 대체된 LEMP를 쓴다. NGINX는 여러 서드파티 기능을 모듈로 쓰고 있으며, 그래서 필요하지 않을 경우 모듈을 제외해 놓을 수 있다, 단, 완성된 바이너리를 사용하지 않고 소스를 컴파일해서 사용할 때는, 사용할 모듈을 컴파일 할 당시에 추가하지 않으면 그 이후에 추가할 수는 없다.
아파치처럼 NGINX도 사용할 때 환경 설정을 바꾸고 나서 서버 데몬을 재시작할 필요 없이 reload 시그널을 보내면 된다. 즉, 프로세스를 재시작할 필요가 없다는 장점이 있다.물론 Apache도 httpd 명령어에 graceful 기능이 있다.
NGINX 유닛이라는 마이크로서비스용 앱 서버를 내놨는데, 정적인 설정 파일이 아니라서 설정을 고치는 중에도 서비스 운영에 방해가 없다고 한다