yum
에 nginx를 위한 외부 리포지토리를 추가한다./etc/yum.repos.d
폴더 내에 nginx.repo
파일을 생성한다.
$ touch nginx.repo
$ vi nginx.repo
그 후 아래 내용 붙여넣기
[nginx]
name=nginx repo
baseurl=https://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
centOS의 버전이 5혹은 6이라면
$releassever
에 직접 버전을 입력한다.
외부 리포지토리를 연결한 후, yum
을 이용해 설치한다.
$ sudo yum install nginx
conf
파일을 작성해야 하는데, 리액트를 기준으로 작성했다./etc/nginx/conf.d
폴더 아래에 새로운 설정 파일을 생성한다. 해당 폴더 아래에 작성하면 자동으로 nginx.conf
파일에 포함된다.
$ touch web.conf
필요한대로 설정 파일을 적는다.
server {
listen 9000;
server_name [domain or IP address];
root /home/web/ui/build;
index index.html index.htm;
location / {
try_files $uri $uri/ /index.html;
}
}
listen 9000;
은 9000포트에 대한 요청을 받는다. 보통80
을 사용하는데, http의 기본 요청 포트가 80이기 때문.. 아래처럼 적으면http://domain.com:9000
이런식으로 오는 요청에 대해 처리하게 된다.server_name
은 도메인이나 아이피 주소를 적는다.root
는index.html
이 위치한 폴더의 path를 적는다.index
는 적힌 순서대로 찾는다. 먼저index.html
을 찾고 그 다음.. 리액트는index.html
로적으면 됨location / {}
는/
다음에 오는 모든 요청을 받아들인다. 분기해서 적을 수 있고, 정규식으로 필터링 할 수도 있다.try_files
부분이 중요한데, 저걸 적지 않으면 리액트라우터로 설정한대로 안되고 해당 경로의 파일을 찾으려 한다..
SSL
설정이 필요하면,listen 9000 ssl;
로 수정한 뒤, 인증서 설정만 추가하면 된다.
만약 80포트만 사용하면, redirect로 http요청(80)을 바로 https(443)로 보내버릴 수도 있다.
설정 파일까지 다 작성했으면 엔진엑스를 실행한다.
$ sudo systemctl start nginx
실패하면 systemctl status nginx
로 확인하거나 에러 로그를 확인한다. 에러 로그는 따로 패스를 수정하지 않은 이상 /var/log/nginx/error.log
로 확인할 수 있다.
배포하면서 만난 오류들은 보통 다 permission denied였다. nginx.conf
파일을 살펴보면 user nginx;
로 작성돼 있는데, 해당 유저에게 권한이 없기 때문에 nginx유저를 생성해 권한을 주거나 권한이 있는 유저로 변경해주면 된다.
root유저로 변경하는 것은 추천하지 않는다.
그리고 SSL 인증서도 권한 오류가 있었는데, 아래 명령어로 해결했다.
restorecon -v -R /인증서파일path
'STUDY > ECT' 카테고리의 다른 글
Nginx | 로그 경로 바꾸기 + permission denied (0) | 2022.03.25 |
---|---|
Nginx | bind() to 0.0.0.0:8000 failed (13: Permission denied) (0) | 2022.03.25 |
MacOs | Warning: the fonts "Times" and "Times" are not available for the Java logical font "Serif"... (0) | 2021.11.17 |
homebrew tomcat8 설치 (0) | 2021.06.21 |
oh-my-zsh 단축어 등록 (0) | 2021.04.23 |