포스트

NGINX와 React

NGINX와 React

nginx.conf내에서 어플리케이션을 바로 연결해서 구동할 수 있도록 할 수도 있지만, 조금 더 깔끔하게 사용하기 위해서 선호되는 방식은 /etc/nginx내에 sites-enabled디렉토리를 생성해서 여기에 각 서비스 설정을 넣고 nginx.conf가 이들을 확인하도록 하는 방식으로 하겠다.

기존에 있는 server 블록은 주석처리를 하고,

1
2
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*.conf;

2번째 줄을 추가해준다. 이로써 sites-enabled하위의 설정파일들을 포함하도록한다.

처음 nginx를 설치 했다면 sites-enabled 디렉토리가 없다. 그러므로 직접 생성해준다. 이제 /etc/nginx아래에 sites-available 디렉토리를 생성해줄 것인데, 이 디렉토리에 필요한 파일들을 작성후, symlik로 sites-enabled에 추가하는 방식으로 할 것이다.

1
2
3
sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled
sudo vi /etc/nginx/sites-available/[AppName].conf

여기서는 React 앱을 배포하는 과정만 포함되어있다. HTTP에 해당하는 port 80에 대한 설정만 해보자.

1
2
3
4
5
6
7
8
9
server {
  listen 80;

  location / {
    root /home/ec2-user/##/build;
    index index.html index.htm;
    try_files $uri %uri/ /index.html;
  }
}
1
listen 80;

이 부분은 80 port를 listen한다는 설정이다.

1
2
3
4
5
location / {
    root /home/ec2-user/##/build;
    index index.html index.htm;
    try_files $uri %uri/ /index.html;
  }

location 블록 nginx에서 가장 많이 사용하는 부분인데,

location 뒤 ‘/’는 directive라고 하는 부분이다. IP 주소나 도메인의 뒷부분인 URI에 대응이 된다.

root는 React project의 build 디렉토리 경로를 입력한다.

1
2
sudo ln -s /etc/nginx/sites-available/[AppName]conf /etc/nginx/sites-enabled/[AppName]conf
sudo nginx -t

symlink를 설정하고, 설정 테스트를 진행한다.

이제 nginx를 동작시키면 된다.

1
sudo systemctl start nginx

실행 후에 접속은 되나 500 Internal Server Error가 발생할 수 있다.

이때 build까지의 경로로 접근을 할 때 거치는 디렉토리에 대해서 실행권한이 없어서 발생할 수 있는 문제일 수 있다.

/home/ec2-user의 권한은 711로 주도록하자.

1
chmod 711 /home/ec2-user

이후로 제대로 동작할 것이다.


원문: Yuris99/CCS · 전체 학습 기록

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.