1: Nginx 설치
우분투(Debian 계열)에서
sudo apt install nginx
Amazon Linux(RHEL 계열)에서
sudo yum install nginx
2: 실행
일반실행으로 실행
nginx 실행파일을 실행.
이후 명령은 이걸 실행한 사용자와 같은 사용자로 실행한다.(그런데 권한 때문에 귀찮아서 그냥 sudo로만 하게 된다….)
nginx
nginx -s stop
— 즉시 종료nginx -s quit
— 현재 처리중인 요청들이 끝난 뒤 종료nginx -s reload
— 설정파일 다시 가져오기nginx -s reopen
— 로그파일 다시열기
서비스로 시작
sudo systemctl start nginx
- 자동으로 시작되도록 설정:
sudo systemctl enable nginx
- 재시작:
sudo systemctl restart nginx
- 종료:
nginx -s quit
로그파일
실행 후 /var/log/nginx
경로에 access.log
, error.log
파일이 생기는군요.
3: 설정
3-1: 설정파일
apt, yum 등의 패키지 관리자를 통해 설치한 경우 /etc/nginx/nginx.conf
위치에 메인 설정파일이 있다.
/etc/nginx/sites-available/default
: 서버블록 설정파일이다. 우분투에서 Nginx를 설치해보니 기본적으로 메인 설정파일에서 분리되어 있다. 조금 찾아보니 각 server 블록을 분리해서 별도 디렉토리에 보관하는 게 일반적인 관습인 듯하다. 그런데 Amazon Linux에서도 깔아봤는데 이거 없던데. 왜 다른지 모름.
vi, nano 등의 편집기로 설정파일을 편집하자.
4: 예시
4-1: 정적 콘텐츠 제공 서버
특정 디렉토리 하위의 파일들을 제공하도록 설정
디렉토리
/data/www
경로에 예를 들어 HTML 파일들을 배치/data/images
경로에 예를 들어 이미지 파일들을 배치
설정파일
설정 파일 안의 server
블록 안에 아래와 같이 location
블록 추가
server {
...
location / { # 1
root /data/www;
}
location /images/ { # 2
root /data;
}
}
이제 /images/
로 시작하는 경로의 요청은 #2에 매칭, 그밖의 요청들은 #1에 매칭된다.
4-2: Hello World
루트 페이지에서 index.html
파일을 불러오도록 설정한다.
index.html
/var/www/html
경로에 index.html
파일을 만든다. 간단히 Hello World라고만 적힌 문서이다.
sudo mkdir -p /var/www/html
echo '<!DOCTYPE html><html><head><title>Hello World</title></head><body><h1>Hello, World!</h1></body></html>' | sudo tee /var/www/html/index.html
설정파일
설정 파일 안의 location /
블록 안을 아래와 같이 수정
server {
...
location / {
root /var/www/html;
index index.html;
}
}
5: 확인
실행 후 브라우저로 해당 주소에 접근한다.
