HTTP란 무엇인가요?
http는 웹브라우저와 서버간의 웹페이지 같은 자원을 주고 받을 때 쓰는 통신 규약입니다. 이렇듯 규약이 있기 때문에, 모든 프로그램이 이 규칙에 맞춰 개발하고 서로 정도를 교환할 수 있습니다. HTTP는 연결상태를 유지하지 않는 비연결성 프로토콜입니다. 이것을 개선하기 위해서 COOKIE와 SESSION이 등장하였습니다.
HTTPS란 무엇인가요?
HTTP프로토콜의 보안 버전입니다. 인증서를 통해 암호화 및 인증으로 보안이 더욱 강화됩니다.
HTTPS를 적용한 이유는 무엇인가요?
HTTP는 단순 텍스트교환이기 때문에 내용이 노출될 수가 있습니다. 하지만, HTTPS는 HTTP의 SSL(TLS)라는 인증서를 이용하여 텍스트를 암호화 하기 때문에 내용이 노출되는 것을 막아줍니다. 이러한 이유 때문에, HTTP에서 HTTPS로 바꾸는 작업을 했습니다.
SSL/TLS이란 무엇인가요?
SSL보다 TLS가 업그레이드된 버젼입니다. 제공하는 서비스는 무경설, 기밀성, 인증서를 통한 상호인증(서버,클라이언트)입니다.
특정 사이트는 사이트 정보와 사이트 공개키를 기관에게 제출합니다. 기관은 사이트 정보와 공개키를 암호화한 사이트 인증서를 특정사이트에게, 인증기관 공개키는 웹브라우저(구글, 사파리, 익스플로어 등)에게 제공합니다. 사용자가 웹브라우저를 통해 특정사이트에 접속하면 특정사이트는 자신의 인증서를 웹브라우저에게 보냅니다. 인증서를 받은 웹브라우저는 인증기관의 공개키로 서버 인증을 하고 대칭키를 특정사이트에게 보내줍니다.
<HTTPS에서 Nginx를 적용한 이유>
https를 적용하기위해서 자료를 찾다가 nginx을 알게 되었고 이는 사용이 매우 심플하고 규모가 작은 서비스이면서 정적 데이터 처리가 많은 서비스에 적합하다는 것을 알게 되었습니다. 이 이점을 살려 nginx를 적용하게 되었습니다.
Let's Encrypt(렛츠 인쿠루프트)의 방법은 무료의 TLS/SSL 인증서를 쉽게 가져오고 설치할 수 있는 방법을 제공하는 CA(인증 기관)으로, 웹 서버에서 암호화된 HTTPS를 사용할 수 있습니다.
이러한 방법은 사용자에게 Certbot(서트봇)라는 소프트웨어를 제공함으로써 구현할 수 있게 합니다.
웹서버란 무엇인가요?
웹서버는 클라이언트의 요청을 받아서 정적 컨텐츠를 제공하는 서버입니다. 예를 들어 단순HTML, CSS, 이미지 등 즉시 응답이 가능한 컨텐츠입니다.(웹서버의 대표적인 Apache, Nginx)
하지만, 동적 컨텐츠를 요청 받으면 WAS에게 해당 요청을 넘겨주고, WAS에서 클라이언트에게 전달해줍니다.
WAS란 무엇인가요?
WAS는 웹서버가 처리 할 수 없는 것들을 처리해 준다. 특히 DB의 조회나 다양한 로직처리가 필요한 동적 컨텐츠를 처리하여 서비스를 클라이언트에게 제공한다. (WAS의 대표적인 Tomcat, Jeus 등이 존재)
그렇다면, WAS만 사용하면 되지 않을까라는 생각을 할 수 있습니다.
하지만, WAS는 DB조회 및 다양한 로직을 처리하는 데 집중해야 합니다. 만약 WAS로만 설계하게 되면, 효율성이 크게 떨어지기 때문입니다. 단순한 정적 컨텐츠는 웹서버에게 맡기는 기능을 분리시키고 동적인 것을 WAS에게 맡긴다면, 서버 부하를 방지할 수 있습니다.
클라이언트 → Web서버 →DB
클라이언트 → WAS → DB
클라이언트 → Web서버 → WAS →DB (효율적인 분산 처리로 인해 서버 부하를 방지가능)
'Back-end > Web' 카테고리의 다른 글
쓰레드(thread) (0) | 2022.04.14 |
---|