100%를 한번에 바꾸는건 어려워도 1%를 100번 바꾸는건 쉽다.

생각정리 자세히보기

개발/Deploy

[Deploy] Nginx 설치 및 HTTPS 적용

dc-choi 2022. 7. 12. 18:00
반응형

최근에 인턴을 시작하게되어서 Nginx를 사용해서 리버스 프록시 환경에서 HTTPS를 구축하는 업무를 수행했다.

회사에서 진행한 내용을 공개할 수 는 없어서 현재 진행중인 사이드 프로젝트에 적용해보도록 한다...

 

설치 환경은 Ubuntu 20 LTS에서 진행한다...

 

잠깐! 리버스 프록시란?

https://sujinhope.github.io/2021/06/13/Network-%ED%94%84%EB%A1%9D%EC%8B%9C(Proxy)%EB%9E%80,-Forward-Proxy%EC%99%80-Reverse-Proxy.html

 

[network] 프록시(proxy)란, forward proxy와 reverse proxy - Break Out of Your Comfort Zone

목차 프록시(Proxy)란? 포워드 프록시(Forward Proxy) 리버스 프록시(Reverse Proxy) 면접은 시원하게 망했지만…. ​(​눈물나네 ) 면접 준비를 하면서 정리했던 내용들을 차례차례 정리해서 올려보려고

sujinhope.github.io

https://jjeongil.tistory.com/1490

 

Linux : Nginx Reverse Proxy 설정 방법, 예제, 명령어

역방향 프록시는 클라이언트 요청을 가져와서 하나 이상의 프록시 서버에 요청을 보내고 응답을 가져오고 서버의 응답을 클라이언트에 전달하는 서비스입니다. 성능과 확장성 때문에 NGINX는 HTT

jjeongil.tistory.com

https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

 

NGINX Reverse Proxy | NGINX Plus

NGINX Reverse Proxy Configure NGINX as a reverse proxy for HTTP and other protocols, with support for modifying request headers and fine-tuned buffering of responses. This article describes the basic configuration of a proxy server. You will learn how to p

docs.nginx.com

 

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://12bme.tistory.com/367

 

[Nginx] 엔진엑스 프록시 모듈

엔진엑스 기본 빌드에는 프록시 모듈이 포함돼 있어 클라이언트로부터의 HTTP 요청을 백엔드 서버에 전달합니다. 여러 관점에서 모듈환경을 설정해봅시다.  - 백엔드 서버의 기본 주소와 포트

12bme.tistory.com

https://www.zerocho.com/category/NodeJS/post/5ef450a5701d8a001f84baeb

 

https://www.zerocho.com/category/NodeJS/post/5ef450a5701d8a001f84baeb

 

www.zerocho.com

반응형

'개발 > Deploy' 카테고리의 다른 글

[Deploy] Docker Image Size를 줄여 성능 개선  (3) 2024.10.10
[Deploy] Docker란?  (0) 2024.07.29