📒 오늘의 공부
5장 HTTP와 연계하는 웹 서버
1. 1대로 멀티 도메인을 가능하게 하는 가상 호스트
- HTTP 가상 호스트(Virtual Host) 기능: 웹 서버에서 여러 개의 웹 사이트를 하나의 서버에서 호스팅하기 위한 기술
- 물리적으로는 서버가 1대지만 각 도메인 또는 호스트 이름에 따라 다른 웹 사이트를 제공하기 때문에 가상으로 여러 대의 서버가 있는 것처럼 설정하는 것이 가능
- 하나의 서버로 다른 도메인명을 가진 여러 웹 사이트를 운영하는 기업 또는 조직에서 사용하며 각 웹 사이트를 독립적으로 관리할 수 있다.
💡 웹서버
- 웹 서버(Web Server): 클라이언트로부터 HTTP 요청을 받고, 이러한 요청에 대한 응답을 생성하여 클라이언트에게 제공하는 소프트웨어나 하드웨어
- 웹 사이트, 웹 애플리케이션, 웹 페이지 등을 인터넷을 통해 공개하고 접근할 수 있게 하는 역할
- 일반적인 웹 서버 소프트웨어: Apache, Nginx, Microsoft IIS, LiteSpeed
- 클라우드 서비스 제공 업체는 자체 웹 서버 인프라를 갖고 있다. ex. AWS
💡 DNS(Domain Name System)
- 인터넷에서 도메인명(Domain Name)을 IP 주소로 해석하거나, 그 반대로 IP 주소를 도메인명으로 변환하는 시스템
- 인터넷 사용자가 웹 브라우저에서 도메인명을 입력하거나 링크를 클릭할 때, DNS는 해당 도메인명을 해당 웹 서버의 IP 주소로 해석하여 요청된 웹 페이지 또는 서비스로 연결한다.
2. 통신을 중계하는 프로그램: 프록시, 게이트웨이, 터널
- HTTP는 클라이언트와 서버 이외에 프록시(Proxy), 게이트웨이(Gateway), 터널(Tunnel)과 같은 통신을 중계하는 프로그램과 서버를 연계하는 것도 가능하다.
- 이러한 중계 역할을 하는 서버들은 HTTP 요청을 받아서 클라이언트에서부터 받은 리퀘스트를 다음 서버로 중계하고, 그 서버로부터 받은 리스폰스를 클라이언트에 반환한다.
- 중계 서버를 통해 클라이언트와 서버 간의 통신을 중계함으로써 네트워크 관리와 보안을 개선하고, 클라이언트와 서버 간의 직접적인 연결을 줄일 수 있다.
프록시(Proxy)
게이트웨이(Gateway)
💡 게이트웨이가 중계 역할을 하는 것을 클라이언트가 알지 못하게 하는 이유
- 클라이언트가 게이트웨이의 존재를 모르면 서버는 더 수월하게 중계 서버를 도입하거나 교체할 수 있다.
- 네트워크 환경(infrastructure)을 숨길 수 있기 때문에 클라이언트는 네트워크 상의 복잡한 구조를 모른 채로 웹 리소스에 접근 가능하다.
=> 게이트웨이는 중계와 추가 기능을 제공하면서 클라이언트가 이러한 복잡성을 인식하지 않도록 할 수 있다.
- 클라이언트와 게이트웨이 사이를 암호화하는 방식으로 안전하게 접속함으로써 통신의 안정성을 높이는 역할
터널(Tunnel)
- 클라이언트와 서버 간의 데이터 통신을 중개하거나 보안된 연결을 통과시키는데 사용되는 중계 프로그램
- HTTP 메시지를 수정할 수 있는 프록시와 달리 터널 자체는 HTTP 리퀘스트를 해석하려고 하지 않고 리퀘스트를 그대로 다음 서버에 중계한다.
- 주로 암호화된 연결(예: HTTPS)을 통과시키거나, 클라이언트와 서버 간의 직접적인 연결을 통해 데이터를 전송하는 데 사용된다.
3. 리소스를 보관하는 캐시
클라이언트 측에 있는 캐시
- 브라우저에 클라이언트가 보존하는 캐시 = 인터넷 임시 파일
- 브라우저가 유효한 캐시를 가지고 있는 경우, 같은 리소스에 대한 요청은 서버에 재액세스하지 않고 캐시된 버전을 로컬 디스크로부터 불러 온다.
- 캐시 서버와 마찬가지로 리소스가 오래된 것으로 판단된 경우, 오리진 서버에 리소스의 유효성을 확인하거나 새로운 리소스를 다시 획득하러 간다.