본문 바로가기
운영체제 및 플랫폼/Linux(리눅스), 우분투(Ubuntu)

Nginx에서 HTTPS 설정할 때 꼭 알아야 할 포트 443의 의미

by upself 2025. 4. 4.
728x90

서버를 운영하다 보면 이런 이야기를 자주 듣게 됩니다.
"HTTPS 설정하려면 Nginx에서 listen 443 ssl; 꼭 넣어야 해요."

그런데 궁금하지 않으셨나요?
도대체 왜 443 포트를 사용해야 하는 걸까요?
이번 글에서는 웹 동작 방식과 함께 그 이유를 예시 도메인인 upself.tistory.comupself2.tistory.com을 기준으로 설명드릴게요.


🌐 브라우저는 어떻게 동작할까?

예를 들어 사용자가 다음과 같이 접속한다고 가정해볼게요:

https://upself2.tistory.com
  1. 브라우저는 먼저 DNS를 통해 도메인을 IP 주소로 변환합니다.
  2. 그 다음 해당 IP의 443번 포트로 HTTPS 요청을 보냅니다.
  3. Nginx가 listen 443 ssl;로 이 요청을 받아야 접속이 됩니다.

💡 참고로 HTTP 요청은 기본적으로 80번 포트를 사용합니다.
하지만 HTTPS는 보안 통신이기 때문에 443번 포트를 사용하도록 국제 표준으로 정해져 있어요.


📌 예시로 살펴보는 두 서버 설정

1️⃣ upself.tistory.com (기존 서버 - FileMaker가 HTTPS 처리)

server {
    listen 8080;

    location / {
        proxy_pass https://upself.tistory.com;
        proxy_ssl_verify off;
    }
}
  • Nginx는 8080포트만 열어두고 있음
  • 클라이언트는 https://upself.tistory.com로 접속 → 이건 FileMaker가 직접 443 포트 열고 처리
  • Nginx는 그저 중간에서 요청을 넘기는 역할만 함 (프록시)

2️⃣ upself2.tistory.com (신규 서버 - Nginx가 HTTPS 처리)

server {
    listen 443 ssl;
    server_name upself2.tistory.com;

    ssl_certificate     /etc/letsencrypt/live/upself2.tistory.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/upself2.tistory.com/privkey.pem;

    location / {
        proxy_pass http://localhost:16001/;
    }
}
  • Nginx가 직접 443 포트를 열고 SSL 통신을 처리
  • 외부 HTTPS 요청 → Nginx가 받고 → 내부 HTTP 포트(16001)로 전달
  • 이런 구조에서는 반드시 listen 443 ssl;이 있어야 HTTPS가 동작합니다

🧪 비유로 이해해보기

포트는 웹 서버의 출입문과 같습니다.

  • 브라우저는 "https니까 문번호 443으로 가야지!" 하고 찾아갑니다.
  • 그런데 Nginx가 "나는 443번 문 안 열어뒀는데?" 하면 → ❌ 접속 안 됨
  • 결론: HTTPS 요청을 받고 싶다면, 반드시 listen 443 ssl;로 문을 열어둬야 해요!

📦 포트 변경도 가능할까?

Nginx 설정에서 포트를 바꾸는 건 가능합니다. 예: listen 8443 ssl;
하지만 이 경우엔 사용자가 주소에 포트를 직접 입력해야 합니다.

https://upself2.tistory.com:8443

이런 방식은 사용자에게 익숙하지 않기 때문에, 실제 서비스에서는 무조건 443 포트를 사용하는 게 기본입니다.


✅ 요약 정리

  • HTTPS는 브라우저가 자동으로 443 포트를 찾는 구조
  • Nginx가 이 요청을 처리하려면 반드시 listen 443 ssl;이 있어야 함
  • FileMaker가 직접 SSL 처리하는 구조가 아니라면, SSL 인증서도 Nginx에 설정해야 함
반응형