nginx 설치
패키지 업데이트
sudo apt update
nginx 설치
sudo apt install nginx
방화벽 설정
UFW(Uncomplicated Firewall)는 Ubuntu 및 Debian 기반 시스템에서 제공되는 방화벽 관리 도구
sudo ufw app list
Nginx Full: HTTP와 HTTPS를 모두 허용.
Nginx HTTP: HTTP 트래픽만 허용.
Nginx HTTPS: HTTPS 트래픽만 허용.
OpenSSH: SSH 원격 접속 허용.
sudo ufw allow 'Nginx Full'
방화벽 설정 상태 확인
sudo ufw status
활성이 아니라면 아래 명령어 사용
sudo ufw enable
불필요하게 방화벽 규칙이 추가되었을 때 제거 방법
sudo ufw status numbered
위 명령어를 사용하면 번호가 나옴
sudo ufw delete [번호]
nginx 상태 확인
systemctl status nginx
위 화면에서 나가기 :wq or ctrl + c
nginx 기본 설정 경로 및 설정 파일 찾기
운영 체제 기본 경로
Ubuntu/Debian: /etc/nginx/nginx.conf
CentOS/Red Hat: /etc/nginx/nginx.conf
macOS (Homebrew): /usr/local/etc/nginx/nginx.conf
Custom Build: /usr/local/nginx/conf/nginx.conf
찾기 명령어
sudo find / -name "nginx.conf"
sudo nginx -t
서버 블록 작성
Nginx 서버 블록은 Nginx 웹 서버에서 도메인 및 요청 처리 방식을 정의하는 설정 단위. 이를 통해 서로 다른 도메인이나 서브도메인에 대해 별도의 설정을 적용
Ubuntu 및 Debian: /etc/nginx/sites-available/
CentOS 및 RHEL: /etc/nginx/conf.d/
macOS (Homebrew): /usr/local/etc/nginx/conf.d/
Windows: 설치 디렉토리\conf.d\
파일 생성
sudo vi /etc/nginx/sites-available/example.com
파일 작성
server {
listen 80;
server_name example.com;
root /var/www/example;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
server: Nginx에서 하나의 서버 블록(Server Block)을 정의
listen: Nginx가 요청을 수신할 포트를 정의
- 브라우저에서
요청이 들어오면 이 블록이 요청을 처리http://example.com
server_name: 이 서버 블록이 처리할 도메인 이름을 지정합니다.
- example.com으로 요청된 트래픽만 이 서버 블록이 처리합니다.
- 와일드카드(*.example.com)나 정규식으로 여러 도메인을 처리할 수도 있습니다.
root: 요청된 정적 파일을 제공할 웹 루트 디렉토리를 설정합니다.
- 예:
요청이 들어오면 /var/www/example/index.html 파일을 반환합니다.http://example.com/index.html
index: 기본적으로 반환할 인덱스 파일을 지정합니다.
location: 요청된 URL 경로(여기서는 /)에 대한 처리 방법을 정의합니다.
- 슬래시(/)는 루트 경로를 의미하며, 이 블록은 모든 요청에 기본적으로 적용됩니다.
try_files $uri $uri/ =404;: 요청된 파일이나 디렉토리가 존재하는지 확인하고, 없으면 404 오류를 반환합니다.
서버 블록 활성화
심볼릭 링크 설정
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
심볼릭 링크를 잘못 설정할 수도 있는데
sudo nginx -t # 심볼릭 링크 잘못 설정되었으면 failed 메시지 나옴
연결 확인
ls -l /etc/nginx/sites-enabled/
example이 잘못된 것을 확인할 수 있음, 심볼릭 링크 제거
sudo rm /etc/nginx/sites-enabled/example
설정 적용
sudo systemctl reload nginx
특정 폴더에 파일이 옴겨지지 않을때 – 권한 문제
example 파일은 생성했지만 호스팅 해야하는 파일들이 옴겨지지 않음 permission denied라 나옴
폴더 권한 설정
# 계정: sangmin
sudo chown -R sangmin:sangmin /var/www/example
또 다른 방법으로는 www-data 그룹에 계정을 추가하는 방법
sudo usermod -aG www-data sangmin
sudo chown -R www-data:www-data /var/www/example
sudo chmod -R 775 /var/www/example
exit # 다시 로그인 하기 위해 나가기