가비아에 로그인한 후, DNS 관리 페이지(예: 가비아 DNS 관리)로 이동합니다.
여기서 도메인에 대해 다음과 같이 DNS 레코드를 설정합니다.
링크 : https://dns.gabia.com/dns/internals/total_set
DNS 레코드 예시
TTL(Time To Live)란?
이렇게 설정하면, 도메인(example.com)서버의 IP 주소를 가리키게 되어 웹 브라우저에서 접속할 수 있습니다.
이후 보안을 포함한 부하 분산, SSL 인증서 적용 등을 편리하게 하기 위해 Nginx를 적용하겠습니다.
그렇게되면 외부에서 서버로 바로 요청이 들어오는게 아니라, Nginx가 역방향 프록시 역할을 하여 클라이언트의 요청을 받아 내부 서버로 전달하게 됩니다.
예를 들어 fastapi를 이용해 웹서버를 구축했다면,
클라이언트 -> fastapi 서버 방식이 아니라
클라이언트 -> Nginx -> fastapi 단계로 이루어져 중간에서 SSL 통신 처리, 부하분산 등의 역할을 손쉽게 도와줍니다.
보안을 강화하고 부하 분산, SSL 인증서 적용 등을 용이하게 하기 위해 Nginx를 사용합니다.
Nginx는 외부에서 들어오는 요청을 받아 내부의 FastAPI 서버(예: uvicorn)로 전달하는 역방향 프록시(reverse proxy) 역할을 합니다.
예를 들어 FastAPI 애플리케이션을 uvicorn으로 실행하면,
직접 외부에서 접속하는 방식(클라이언트 → FastAPI)보다는
클라이언트 → Nginx → FastAPI 방식으로 요청이 전달되어, Nginx에서 SSL 종료, 요청 헤더 처리, 부하 분산 등의 추가 기능을 활용할 수 있습니다
sudo apt update
sudo apt install nginx
sudo vi /etc/nginx/sites-available/fastapi.conf
아래와 같이 내용을 입력합니다.
(이 설정은 외부의 80 포트로 들어온 요청을 내부의 127.0.0.1:8000 포트로 전달합니다.)
server {
listen 80;
server_name example.com www.example.com; # 구매한 도메인 입력
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp # HTTPS를 사용
sudo ln -s /etc/nginx/sites-available/fastapi.conf /etc/nginx/sites-enabled/
sudo nginx -t # 설정 파일 (문법)테스트
sudo systemctl restart nginx # 재시작
5.SSL 인증서 적용 (Certbot 사용) SSL을 적용하여 HTTPS 통신을 가능하게 하려면 Certbot을 사용합니다.
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
참고 : Nginx 명령어
Nginx 상태 조회 명령어
sudo systemctl status nginx
Nginx 시작 명령어
sudo systemctl start nginx
Nginx 중지 명령어
sudo systemctl stop nginx
재시작
sudo systemctl restart nginx
Nginx 자동 시작 설정: 서버 부팅 시 Nginx가 자동으로 시작되도록 설정하려면 다음 명령어를 사용합니다.
sudo systemctl enable nginx
위 설정을 완료하면, 서버의 IP 주소 대신 도메인으로 웹사이트에 접속할 수 있으며, Nginx가 역방향 프록시로 작동하여 FastAPI 애플리케이션으로 요청을 전달합니다. 또한, Certbot을 통한 SSL 인증서 적용으로 HTTPS 연결도 사용할 수 있습니다.
이제 여러분의 도메인을 통해 안전하고 효율적인 웹 서비스 운영이 가능합니다.