SSL 터미네이션으로 서버 부담 줄이기

JSM·2023년 12월 13일
0

프로젝트

목록 보기
10/10
post-thumbnail

HTTPS 요청은 어떻게 이뤄질까?

  • 클라이언트에서 서버로 요청을 보낼때 HTTPS를 통해 보냅니다.
  • 서버는 HTTPS를 통해 암호화된 데이터를 복호화 하는 과정을 거칩니다.
  • 하지만 모든 클라이언트 요청마다 HTTPS를 복호화해서 데이터를 가지고 오면 매번 복호화가 이뤄집니다.

SSL 터미네이션이 무엇일까?

  • Nginx는 SSL 터미네이션이라는 기능을 제공합니다.
  • HTTPS로 온 요청을 HTTP로 변환하는 요청입니다.
  • 즉 HTTPS로 클라이언트가 요청을 보내면 이를 HTTP로 변환하여 서버로 보내주는 것입니다.
  • 이는 서버가 복호화하는 문제를 없애줍니다.

SSL 터미네이션의 한계..? 가 맞나...?

  • SSL 터미네이션을 사용하기 위해서는 Nginx와 서버가 같은 인스턴스 안에 존재해야합니다.
  • 그 이유는 보안 때문인데 클라이언트의 요청이 Nginx에서 HTTP로 전환되기 때문입니다.
  • 만약 Nginx와 서버가 같은 인스턴스 안에 존재한다면 보안 이슈가 적지만 다른 인스턴스라면 보안 이슈가 발생할 수 있습니다.

SSL 터미네이션 구현

443포트 즉 https로 왔을때 리버스 프록시를 통해 http 요청으로 변환하는 코드입니다.

server {
    listen 443 ssl;
    server_name 도메인;

    ssl_certificate /etc/letsencrypt/live/도메인/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/도메인/privkey.pem;

    location / {
        proxy_pass http://blue_backend;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
profile
내 기술적 고민들을 모은 곳...

0개의 댓글