반응형
앞선 글에서 콘타보 인스턴스에 Docker와 프로젝트를 배포하는 과정을 정리했다.
이제 다음 단계로 도메인 연결, Nginx 설정, 방화벽 설정을 마무리해보자.
1. 도메인 연결 (Cloudflare)
이미 Cloudflare에서 도메인을 보유하고 있다면, 나는 이미 Cloudflare를 통해 이미 도메인을 가지고 있었다.
다음과 같은 방식으로 서버와 연결할 수 있다.
A 레코드 등록
Cloudflare의 DNS 탭에서 아래처럼 A 레코드를 추가한다.
이름 | 타입 | 값 | 프록시 상태 |
@ | A | 서버의 공인 IP | DNS only (☁️ 회색) |
www | A | 서버의 공인 IP | DNS only (☁️ 회색) |
처음에는 프록시를 비활성화해 디버깅을 쉽게 한다.
HTTPS까지 설정 완료된 후 다시 프록시를 켜는 것이 좋다.
프록시의 차이는 다음과 같다.
항목 | 프록시 ON | 프록시 OFF |
트래픽 경로 | Cloudflare → 서버 (중간에 Cloudflare가 개입) | 브라우저 → 서버 (직접 연결) |
보안 기능 | 활성화됨 (DDoS 방어, SSL, WAF 등) | 없음 |
속도 최적화 | CDN, 캐싱, 이미지 최적화 등 | 없음 |
실제 IP 노출 | 숨겨짐 (Cloudflare가 대신 응답) | 서버 IP가 그대로 노출 |
SSL 설정 영향 | Cloudflare SSL 설정이 적용됨 (Flexible/Full 등) | 사용자가 서버에서 직접 설정해야 함 |
디버깅 편의성 | 문제 분석 어려움 (Cloudflare가 중간 개입) | 브라우저가 서버와 직접 통신하므로 확인 쉬움 |
2. Nginx 설치 및 설정
Nginx 설치
sudo apt update
sudo apt install nginx -y
설정 파일 생성
/etc/nginx/sites-available/test.com 파일을 다음과 같이 작성한다.
도메인과 포트는 적절히 적도록 합니다.
server {
listen 80;
server_name test.com http://www.test.com;
location / {
proxy_pass http://localhost:3002;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
심볼릭 링크로 활성화
sudo ln -s /etc/nginx/sites-available/dev-jaden.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
3. 방화벽(UFW) 및 보안 설정
Ubuntu 기본 방화벽인 UFW를 활성화해서 외부 접근을 제한할 수 있다.
기본 정책 설정
sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
필요한 포트만 허용
sudo ufw allow OpenSSH
sudo ufw allow 80
sudo ufw allow 443
방화벽 활성화 및 상태 확인
sudo ufw enable
sudo ufw status
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
4. 방화벽(UFW) 및 보안 설정
마지막으로 정상동작하는지 curl을 사용해서 테스트 해보자.
curl test.com
반응형