2022년 7월 ~ 2022년 8월 동안 http 완벽 가이드 스터디를 진행하면서 노션에 정리해놨던 내용입니다.
웹서버란?
임베디드 웹서버
웹 서버가 하는 일
클라이언트 커넥션 수락
요청 메시지 수신
커넥션에 데이터가 도착하면 웹 서버가 커넥션에서 데이터를 읽어들이고 파싱하여 요청 메시지 구성
요청줄을 파싱할 때 요청 메서드, URI, 버전번호를 찾는다. 요청줄은 캐리지 리턴(CRLF) 문자열로 끝난다.
요청 메시지를 파싱하여 key: value 형태가 됨.
헤더는 속도가 빠른 룩업 테이블에 저장되어 각 필드에 신속하게 접근 가능
단일 스레드 웹 서버
멀티 프로세스와 멀티 스레드 웹 서버
웹 서버의 입출력 아키텍쳐
요청 처리
리소스의 매핑과 접근
웹 서버 == 리소스 서버
HTML 페이지나 PNG 이미지 같은 미리 만들어진 콘텐츠 제공 (정적 웹)
서버 위에서 동작하는 리소스 생성 애플리케이션으로 생성된 콘텐츠 제공 (동적 웹)
Docroot (문서 루트)
가상 호스팅된 Docroot
사용자 홈 디렉터리 docroots
웹 서버는 경로가 파일이 아닌 디렉터리를 가리키는, 디렉터리 URL에 대한 요청을 받을 수 있다.
클라이언트가 디렉터리 URL을 요청했을 때 웹서버가 취할 수 있는 행동
대부분의 웹 서버는 요청한 URL에 대응되는 디렉터리 안에서 index.html 파일을 찾는다.
아파치 웹 서버에서, DirectoryIndex 설정 지시자를 사용해서 기본 디렉터리 파일로 사용될 파일 이름의 집합을 설정할 수 있다.
DirectoryIndex index.html home.html
웹서버는 요청에 맞게 콘텐츠를 생성해서 url을 매핑할 수 있다.
서버사이드 인클루드
응답 만들기
응답 보내기
로깅