카테고리 없음

aws nginx 도메인 하나로 프론트 여러개 배포하기 (sub_filter )

seongjin08 2022. 5. 22. 01:23

먼저 aws에 들어가서 배포할 두개의 프로젝트를 git clone 받는다.

nginx를 설치 하자.

$ sudo apt-get install nginx

 

nginx 를 설치확인하고 nginx 의 폴더 위치는 /etc 에 있다.

그 안에 있는 설정 파일에 들어가자.

cd /etc/nginx/site-available

먼저 기존에 있던 default 파일을 지우고 새로 default 파일을 만들어서 내용을 작성하자.

rm -rf default

sudo vi default

파일에 들어가서 i 를 누르면 작성 모드로 변하게 된다.  안에 내용을 채워보자.

 

server {
        listen 80;

location / {

                root /home/ubuntu/mini/build;
                index index.html index.htm;

                try_files $uri /index.html;
        }
}

listen 80은 80번 포트 일때

location /      url / 일때  다음과 같은 내용을 가져온다는 것이다.

root  내가 가져올 build 된 파일의 경로를 적어준다.

밑에 내용을 어떤 파일을 읽을지에 대한 설정이다. 

react 는 build 파일에 html 파일을 읽으면 된다.

작성 완료 후

:wq!

 

파일에 에러가 없는지 확인하기

sudo nginx -t

이제 nginx를 실행 시켜보자.

sudo systemctl start nginx

nginx 를 실행 시킨 후 배포된 ip 로 가게되면 이렇게 nginx 가 작동준인걸 알 수 있다.

 

이제 프로젝트에 가서 build드 파일을 만들어 주면 된다. 

cd ~

npm install 을 하고 build 를 하자.

build 파일이 생성된걸 확인하고 배포된 ip로 가보자.

 

이렇게 배포가 된건을 알 수있다 .

이번에는 두번째 프로젝트를  /test 하면 접속 할 수있게 배포 해보자

 

server {
        listen 80;

location / {

                root /home/ubuntu/mini/build;
                index index.html index.htm;
                try_files $uri /index.html;
        }

location /test {
                alias /home/ubuntu/mini2/build;
                index index.html index.htm;
                try_files $uri $uri/ /index.html;
}

}

이렇게 까지만 작성하면 화면이 나오지 않을것이다.

그 이유는 개발자도구를 열어서 찾아 보자.

경로를 보게되면 /test 가 아닌 기존 url 에 요청을 보내는 것을 볼 수있다 .

이경로를 바꿔주어야 한다. 

빌드된 파일에 들어가서 일일히 바꿔 줄 수도 있지만 개발자 답게 간편하게 수정해 보자.

nginx 에는 sub_filter 라는 기능을 제공한다. 이 기능으로 경로를 수정해 보자.

location /test {
              sub_filter_types text/xml text/css text/javascript;
              sub_filter static/js/ test/static/js/;
              sub_filter href="/favicon href="test/favicon;
              sub_filter static/css/ test/static/css/;
               sub_filter static/media/ test/static/media/;
              sub_filter manifest.json/ test/manifest.json/;
              sub_filter_once off;
              sub_filter_types *;

                alias /home/ubuntu/mini2/build;
                index index.html index.htm;
                try_files $uri $uri/ /index.html;

}

:wq!

sudo nginx -t

sudo syatemctl restart nginx

이렇게 파일을 수정 하고 재시작 하면 경로가 /test로 변경 된걸 확인 할 수 있다.

이렇게 한 url 에 두개의 프로젝트를 배포 해 보았다.