내맘대로 개발일지

[EC2] 안에서 nginx 사용하기 본문

IT

[EC2] 안에서 nginx 사용하기

eulBlue 2025. 11. 12. 08:32

 

 

[AWS] 아무것도 모르는데 EC2 + Docker + MariaDB + nginx

진짜 아무것도 모른다.개발만 해봤지 인프라 처음해본다.곁눈질도 안해봤고 해주는대로 떠먹어서 개발만 해봤다.근데 이번에 기회가 생겨서 처음부터 해보려고 하는데 진짜 아무것도 몰라서

8735.tistory.com

여기에 이어서 Nginx 를 추가적으로 설정해보려고 한다.

지금 내 EC2 안에는 프론트 + 백 + DB 가 같이있다. 테스트 서버라 다 뭉쳐있지만

원래는 이렇게 안한다는 점을 기억해두고 진행한다.

어제 nginx 백앤드 띄워놓고 오늘 다시하려고 하니 어디다가 만들어놨는지 기억이 안나더라.

그런 나를 위한 찾는 방법

sudo nginx -t
nginx: [warn] conflicting server name "_" on 0.0.0.0:80, ignored
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

해당 명령어를 통해서 내가 만든 파일이 어디있는지 찾을 수 있다.

일단 저기서는 백앤드만 띄우는 연습을 했어서 새롭게 conf 를 작성해보려고 한다.

기존꺼는 지우거나 하나만 남겨놓는 방식으로 진행한다.

sudo vi /etc/nginx/conf.d/{파일명}.conf
# ===============================
# FRONT + BACKEND SERVER
# ===============================

server {
    listen 80;
    server_name _;

    # -------------------------------
    # FRONTEND (React/Vue/Next etc.)
    # -------------------------------
    # 빌드된 dist 경로 (Docker로 배포했을 경우 Nginx 루트 또는 /var/www)
    root /var/www/{프로젝트명};
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }

    # -------------------------------
    # BACKEND (Spring Boot running in Docker)
    # -------------------------------
    location /api/ {
        proxy_pass http://127.0.0.1:8080/;
        proxy_http_version 1.1;
        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;

        # 안정성 향상용 옵션
        proxy_connect_timeout 5s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
    }

    # -------------------------------
    # GZIP (선택)
    # -------------------------------
    gzip on;
    gzip_types text/plain text/css application/json application/javascript application/xml+rss;
    gzip_min_length 256;
}

이후 :wq ( Write + Quit ) 하면 탈출할 수 있다.

만약 프론트 접근이안된다면 프로젝트에서 빌드는 했는지 확인해보자.

안했다면 npm install + npm build

내가 깜빡하고 안하고 빌드안돼서 놀랐기 때문이다 ㅎ

sudo mkdir -p /var/www/{프로젝트명}
sudo rsync -av --delete dist/ /var/www/{프로젝트명}/

파일을 nginx 루트로 복사하고

sudo nginx -t
sudo systemctl reload nginx

nginx 를 재시작해주면 된다.

curl 로도 확인해보고 실제 웹 도메인영역에 입력해서도 테스트해보면 된다.

이제 EC2 가 꺼지고 재기동되면 nginx, docker, mariadb 다 같이 죽어버리니까

sudo systemctl enable --now nginx
sudo systemctl enable --now docker
sudo systemctl enable --now mariadb

 docker run 할때 --restart unless-stopped 추가해주자

 

+ 기본적인 명령어들을 적어두려고 한다.

필요해서 매번 찾아보는것도 귀찮고 이정돈 외워둬야할것같기도하다.

// nginx 파일 수정 할때 -> i 누르고 고치고, :wq 해서 저장
sudo vi /etc/nginx/conf.d/default.conf

// nginx 재실행
sudo systemctl reload nginx