오늘은 docker로 Nginx를 설치하는 방법을 알아보겠습니다.
Docker
docker는 컨테이너라는 시스템을 사용해서 어플리케이션을 언제어디서나 동일한 상태로 사용할 수 있게 해주는데요. 일종의 가상화라고 생각하시면 될 것 같습니다.
그래서 리눅스 시스템에서 여러가지 패키지가 꼬이지 않게 하나로 관리할 수 있도록 해주는 것인데요. 설치는 기존에 것을 참고하시어 설치하시면 됩니다.
2025.09.30 - [Programming] - Docker Compose 설치
Docker Compose 설치
# 필수 패키지 설치sudo apt install -y ca-certificates curl gnupg# Docker GPG 키 등록sudo install -m 0755 -d /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg# Docker
remake.tistory.com
Nginx 설치
사실 nginx는 그냥 네이티브로 설치해도 문제가 없는데요. 오늘은 공부하는 마음으로 docker로 설치하는 방법을 알아보겠습니다.
2023.01.12 - [Blog] - Nginx 명령어 알아보기
먼저 docker compose로 설치하기 위해서 폴더 하나를 만듭니다. 그리고 docker compose.yml을 만들어 줍니다.
mkdir data
sudo nano docker-compose.yml
도커의 nginx:latest를 다운받으며, 포트는 기본 포트인 80,443을 사용하는 형태입니다.
/data/nginx를 /etc/nginx/conf.d로 연동하기 때문에 로컬에 /data/nginx 폴더에 default.conf를 만들어 놓으면 nginx 설정 파일로 쓸 수 있습니다.
그리고 홈페이지 루트는 /www로 만들어 놨습니다.
version: '3'
services:
nginx:
image: nginx:latest
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./data/nginx:/etc/nginx/conf.d
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
- ./www:/var/www/html
depends_on:
- certbot
certbot:
image: certbot/certbot
volumes:
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
이후 도커를 실행합니다.
docker-compose up -d로 실행합니다.
docker-compose up -d
sudo docker ps
도메인 인증은 한번 받아야 하는데요. 도커 실행 후에
이제 default.conf를 설정해줘야 하는데요.
아래처럼 간단하게 인증을 위한 것과 내용을 작성해줍니다. 폴더에 보면 도커가 실행되면서 자동으로 data/nginx라는 폴더가 만들어져 있을 겁니다.
default.conf를 만들고 아래처럼 설정해 줍니다.
server {
listen 80;
server_name 도메인; # 여기에 실제 도메인 주소를 입력하세요.
location / {
root /var/www/html;
index index.html index.htm;
}
# Let's Encrypt 도메인 인증을 위한 경로
location ~ /.well-known/acme-challenge/ {
allow all;
root /var/www/certbot;
}
}
이후 아래 명령어를 통해서 인증합니다.
메일 주소와 도메인 주소를 본인 것으로 수정해주세요.
docker-compose run --rm certbot certonly --webroot -w /var/www/certbot --email your-email@example.com -d your-domain.com --agree-tos --no-eff-email
명령어를 치면 주르륵 지나가면서 도메인 인증이 됩니다.
혹시 도커가 잘 살지 않는다면 아래 명령어를 통해서 컨테이너를 삭제하고 다시 시도해 봅니다.
아니면 VM에서 포트를 열어놓았는지 확인해보세요.
sudo docker container prune
인증 후에는 https도 연동해주구요.
server {
listen 80;
server_name 도메인; # 여기에 실제 도메인 주소를 입력하세요.
location / {
root /var/www/html;
index index.html index.htm;
}
# Let's Encrypt 도메인 인증을 위한 경로
location ~ /.well-known/acme-challenge/ {
allow all;
root /var/www/certbot;
}
}
server {
listen 443 ssl;
server_name 도메인;
server_tokens off;
ssl_certificate /etc/letsencrypt/live/도메인/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/도메인/privkey.pem;
location / {
root /var/www/html;
index index.html index.htm;
}
}
그리고 nginx를 다시 실행하려면 아래 명령어를 통해서 실행합니다.
sudo docker exec nginx nginx -s reload
이렇게 간단하게 nginx 설치를 docker로 해보았는데요.
잘 사용하시기 바랍니다.
'Programming' 카테고리의 다른 글
Docker Compose 설치 (0) | 2025.09.30 |
---|---|
ubuntu에서 구글 드라이브 마운트 하는 방법 (1) | 2025.07.19 |
n8n 구글 드라이브 연동 (0) | 2025.07.03 |
AI코딩 툴 replit 사용하기 (3) | 2025.07.02 |
빅데이터 분석기사 오답노트 (1) | 2025.03.18 |