최근에 인턴을 시작하게되어서 Nginx를 사용해서 리버스 프록시 환경에서 HTTPS를 구축하는 업무를 수행했다.
회사에서 진행한 내용을 공개할 수 는 없어서 현재 진행중인 사이드 프로젝트에 적용해보도록 한다...
설치 환경은 Ubuntu 20 LTS에서 진행한다...
잠깐! 리버스 프록시란?
https://jjeongil.tistory.com/1490
https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/
Nginx 설치
sudo apt install nginx
먼저, Nginx를 설치하도록 한다.
sudo vi /etc/nginx/sites-enabled/default
Nginx의 설정파일을 들어간다. 다음과 같이 설정한다.
# 기본적인 서버 이름, 도메인을 설정했다면 다음처럼 설정한다.
server_name http://jangwi.duckdns.org;
location / {
# 모든 요청을 localhost로 전달하도록 함.
proxy_pass http://127.0.0.1:8080;
# 프록시를 위한 HTTP 프로토콜 버전을 정의합니다. 웹 소켓 및 활성 연결을 유지하려면 버전 1.1을 사용해야 합니다.
proxy_http_version 1.1;
# 다음 우선 순위의 $host 변수에는 요청 라인의 호스트 이름 또는 호스트 요청 헤더 필드의 호스트 이름 또는 요청과 일치하는 서버 이름이 포함됩니다.
proxy_set_header Host $host;
# 실제 방문자 원격 IP 주소를 프록시 서버로 전달합니다.
proxy_set_header X-Real-IP $remote_addr;
# 클라이언트가 프록시 처리한 모든 서버의 IP 주소를 포함하는 목록입니다.
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# HTTPS 서버 블록 내에서 사용할 경우 프록시 서버의 각 HTTP 응답이 HTTPS로 다시 작성됩니다.
proxy_set_header X-Forwarded-Proto $scheme;
# 캐시에서 응답을 가져오지 않을 조건을 설정합니다.
proxy_cache_bypass $http_upgrade;
}
설정을 마쳤으면, 설정파일의 문법을 확인한다.
sudo nginx -t
문법상의 문제가 없으면 다음 사진처럼 뜬다.
재시작을 하고, Nginx가 잘 동작하는지 확인한다.
sudo systemctl restart nginx
잘 동작하는것을 확인하였다.
HTTPS 적용
보통 letsencrypt를 사용해서 SSL 인증서를 발급한다고 한다.
패키지 관리자중 하나인 snap을 사용해서 설치를 진행한다.
sudo snap install certbot --classic
설치를 마치고 나면, 다음 명령어를 입력한다.
sudo certbot --nginx
SSL 인증서를 nginx 설정에 적용하는 명령어다. SSL 설정을 완료하면, Nginx의 설정을 다시 들어간다.
※ 중요!! 주석처리된 부분은 건들지말고, 해당 설정대로 등록한다.
다시 문법확인하고, Nginx를 재 시작해보도록 한다.
※ 중요!! 만약 AWS를 사용한다면 HTTPS에 대한 보안 그룹 규칙도 같이 허용해줘야 한다.
정상적으로 HTTPS와 도메인이 적용된 것을 확인할 수 있다.
참고자료
https://www.zerocho.com/category/NodeJS/post/5ef450a5701d8a001f84baeb
'개발 > Deploy' 카테고리의 다른 글
[Deploy] Docker Image Size를 줄여 성능 개선 (3) | 2024.10.10 |
---|---|
[Deploy] Docker란? (0) | 2024.07.29 |