Insights·2026-09-10

웹서버와 HTTPS란 무엇인가 — Nginx가 하는 일

요청이 서버에 도착해도 서버는 아직 무엇을 줘야 할지 모른다. 어느 포트로 온 요청에는 이 폴더의 파일을 주고 어떤 주소는 안쪽 프로그램에 넘기라는 규칙을 적어 두는 것이 웹서버이고, 가장 널리 쓰이는 것이 Nginx다. HTTPS도 여기서 걸린다. 암호화에 쓰는 인증서와 키를 어디서 읽어 어떤 연결에 적용할지가 이 설정에 적히고, 주소창의 자물쇠는 그 설정이 제대로 걸렸다는 표시다.

Nginx 설정이 요청을 어디로 보낼지 정한다 — 글의 요약 도식

요청이 도착해도 아직 정해진 것이 없다

앞 편에서 요청이 어느 컴퓨터의 몇 번 문으로 간다고 했다. 그런데 문 앞까지 왔다고 무엇을 받을지가 정해지는 것은 아니다.

그 컴퓨터 안에는 폴더도 많고 돌아가는 프로그램도 여럿이다. 사람이 모니터로 열어 보는 것과 달리, 요청은 정해진 규칙에 따라 정확히 무엇을 받을지가 미리 적혀 있어야 한다.

그 규칙을 적어 두고 실제로 집행하는 것이 웹서버다. 80번 문으로 온 요청에는 이 폴더의 파일을 준다. 이 주소로 온 요청은 안쪽에서 돌고 있는 프로그램에 넘기고 그 답을 대신 전달한다. 이런 문장들의 모음이 웹서버 설정이다.

가장 널리 쓰이는 것이 Nginx다. 이름은 엔진엑스로 읽는다.

웹서버 설정이 하는 말
443번 문으로 온 요청이면
  이 인증서와 키로 암호화된 연결을 맺는다

  주소가 /api 로 시작하면
    안쪽 8000번에서 돌고 있는 백엔드에 넘긴다

  그 밖의 주소면
    이 폴더에 있는 파일을 그대로 준다

안쪽으로 넘기는 일이 왜 필요한가

요청을 받아 안쪽 프로그램에 넘기고 그 답을 대신 돌려주는 방식을 리버스 프록시라고 한다. 이름은 어렵지만 하는 일은 중개다.

왜 직접 받지 않고 중개를 두는가. 백엔드 프로그램은 보통 8000번 같은 안쪽 포트에서 돌고 밖으로 열려 있지 않다. 밖으로 열린 문은 443번 하나로 두고, 그 문 안에서 주소에 따라 갈라 보내는 편이 관리가 단순하다.

이 구조 덕분에 한 서버에서 여러 서비스를 돌릴 수 있다. 주소가 /api로 시작하면 백엔드로, 그 밖이면 화면 파일로 보내는 식이다. 앞 편에서 서브도메인으로 갈라 보낸다고 한 것과 같은 일을 주소 경로로도 할 수 있다.

HTTPS는 이 층에서 걸린다

HTTP는 내용이 그대로 흐르고 HTTPS는 인증서와 키로 암호화해 보낸다는 대비를 보여 주는 그림.

HTTP는 주고받는 내용이 그대로 흐른다. 중간에 누가 보면 다 보인다. HTTPS는 그 내용을 암호화해서 보낸다. 주소창의 자물쇠 아이콘이 그 표시다.

암호화를 하려면 인증서와 키가 필요하다. 인증서는 이 도메인이 진짜 이 서버의 것임을 제3자가 보증해 주는 문서이고, 키는 그 암호화에 쓰는 비밀 값이다. 둘 다 서버 어딘가에 파일로 놓인다.

그 파일을 어디서 읽어 어떤 연결에 적용할지를 적는 자리가 바로 웹서버 설정이다. 그래서 HTTPS는 별개의 기술이 아니라 이 층의 설정 항목으로 들어온다.

인증서에는 유효기간이 있다. 만료되면 브라우저가 경고를 띄운다. 요즘은 자동 갱신을 걸어 두는 것이 기본이지만, 갱신이 실패했는데 아무도 모르고 있다가 만료일에 터지는 일이 여전히 흔하다.

배포 서비스를 써도 알아야 하는 이유

502·504는 웹서버 층의 신호로, 문지기는 살아 있고 안쪽 프로그램이 대답하지 않는 상태임을 정리한 그림.

Vercel이나 Railway 같은 배포 서비스를 쓰면 이 설정을 직접 만질 일이 거의 없다. 저장소만 연결하면 인증서 발급도 갱신도 알아서 해 준다.

그래도 알아야 하는 이유는 둘이다. 하나는 직접 서버를 빌려 올릴 때 이 층이 통째로 내 몫이 되기 때문이고, 다른 하나는 문제가 났을 때 어느 층인지 가릴 수 있어야 하기 때문이다.

502나 504 같은 숫자를 봤다면 대개 이 층이다. 문지기는 살아서 응답을 하고 있는데 안쪽 프로그램이 대답을 안 하거나 너무 늦게 하는 상태다. 화면이 아예 안 뜨는 것과는 원인이 다르다. 앞 편의 셋을 다 확인했는데도 안 되면 여기를 본다.

증상대개의 뜻볼 곳
연결 자체가 안 됨요청이 도착하지 못함DNS · 서버 생존 · 포트
502안쪽 프로그램이 죽음백엔드 프로세스
504안쪽이 너무 늦게 답함백엔드 처리 시간
인증서 경고만료 또는 도메인 불일치인증서 갱신 설정