1. 리눅스 Nginx 웹 서버 vs apache 웹 서버
리눅스에서 설치되는 웹 서버는 Nginx 웹 서버와 apache 웹 서버로 나눠지며 다음과 같은 차이점을 갖고 있다.
- 아파치는 오픈 소스 HTTP 서버인 반면 Nginx는 오픈 소스, 고성능 비동기 웹 서버 및 역방향 프록시 서버이다.
- 아파치 HTTP 서버의 개발 및 발전은 전 세계 사용자 커뮤니티(Apache Software Foundation)에서 관리 및 유지되지만 Nginx는 2011년에 설립된 동일한 이름의 회사에서 유지 및 관리 된다.
- Apache는 클라이언트 요청 및 웹 트래픽을 처리하는 다양한 다중 처리 모듈을 제공하지만 Nginx는 최소한의 하드웨어 리소스로 여러 클라이언트 요청을 동시에 처리하도록 설계되었다.
- 아파치에서 단일 스레드는 하나의 연결과 연결되지만 Nginx의 단일 스레드는 여러 연결을 처리할 수 있다. 이 프로세스는 메모리를 적게 소모하여 성능이 향상시킨다.
- 아파치 HTTP Server에는 확장성이 없는 다중 스레드 아키텍처지만 Nginx는 여러 클라이언트 요청을 처리하기 위한 비동기 이벤트 기반 접근 방식을 따마란다.
- 아파치 서버는 기존의 메서드를 사용하여 정적 콘텐츠를 제공하고 웹 서버 자체 내에서 기본적으로 동적 콘텐츠를 처리한다. 반면 Nginx는 동적 콘텐츠를 내부적으로 처리할 수 없고 위해 외부 프로세스에 의존합니다.
즉, 보안 및 안정성 측면에서는 apache가 효율 및 속도 측면에서는 nginx가 상대적 장점을 갖고 있다. Centos 8 RHEL & REMI Repository 활성화를 진행하고 설치한다.
2. nginx 웹 서버 설치
1) 업데이트
sudo dnf update
2) nginx 검색 및 버전 확인
sudo dnf list install nginx
3) nginx 설치
sudo dnf install -y nginx.x86_64
4) nginx 상태 확인
sudo systemctl status nginx
5) nginx 시작
Ctrl+c 키를 눌러 빠져 나온 후 nginx를 시작한다.
sudo systemctl start nginx
부팅시 자동 실행 되도록 enable 시켜준다. 다음 명령어를 실행하지 않으면 부팅시 running 상태가 아닌 dead 상태로 구동된다.
sudo systemctl enable nginx
3. firewall 방화벽 설정
1) 방화벽 상태 확인
sudo firewall-cmd --state
2) firewall 목록 확인
sudo firewall-cmd --zone=public --list-all
3) http(80) 포트 추가
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
4) 방화벽 갱신
sudo firewall-cmd --reload
다음 명령어로 확인하면 ports의 80/tcp 항목이 추가된 걸 확인할 수 있다.
sudo firewall-cmd --state
만약 포트를 삭제하려 한다면 다음 명령어를 활용해서 열린 port를 삭제할 수 잇다.
firewall-cmd --permanent --zone=public --remove-port=80/tcp
5) 웹 접속 확인
웹 브라우져에서 ip주소를 입력해서 다음과 같은 화면이 나오면 된다.
웹 브라우저에서 에러가 나온다면 nginx의 status를 확인해서 정상적으로 작동되는 지를 확인한다. 그 다음 방화벽이 작동하고 있으며 80번 port가 열려 있는지를 확인한다.