웹 서버를 선택할 때 가장 많이 비교되는 두 가지, NginxApache. 각자의 강점과 차이점을 이해하면 프로젝트에 맞는 최적의 선택이 가능해요. 오늘은 이 둘의 비교, 설치 방법, 작동 원리까지 함께 알아보겠습니다.

운영체제는 리눅스환경이라고 생각하세요 

아마 데비안리눅스나 UBUNTU 환경이겠죠

🔍 1. Nginx vs Apache: 핵심 비교

항목                                                   Apache                                                      Nginx

 

출시년도 1995년 2004년
구조 프로세스 기반 (Process-based) 이벤트 기반 (Event-driven)
성능 적은 동시접속 처리에 유리 높은 동시접속 처리에 탁월
설정파일 .htaccess 지원 중앙 설정만 지원 (nginx.conf)
리버스 프록시 상대적으로 덜 발달 매우 강력
동적 컨텐츠 자체 처리(PHP 모듈) 외부 앱(FastCGI 등)과 연동
윈도우 지원 상대적으로 안정적 리눅스 환경에서 더 안정적

 

⚙️ 2. 설치 방법

✅ Ubuntu에서 Apache 설치

 
sudo apt update
sudo apt install apache2
 

서비스 시작/중지/확인:

 
sudo systemctl start apache2
 
sudo systemctl stop apache2
 
sudo systemctl restart apache2
 
sudo systemctl status apache2

 

브라우저에서 http://localhost 확인해보세요. "It works!" 메시지가 보이면 성공입니다.

 

✅ Ubuntu에서 Nginx 설치

sudo apt update sudo apt install nginx

 

서비스 시작/중지/확인:

 

sudo systemctl start nginx

 

sudo systemctl stop nginx

 

sudo systemctl restart nginx


sudo systemctl status nginx

 

브라우저에서 http://localhost에 접속하면 Nginx 환영 페이지가 보입니다.

 

✍️ 마무리

  • Nginx는 빠르고 가볍고, 리버스 프록시로도 아주 좋아요.
  • Apache는 설정이 유연하고 PHP와 친화적이에요.

👉 최신 트렌드는 Nginx로 정적 콘텐츠/프록시 처리하고, Apache는 백엔드 처리에 사용하거나, 둘을 혼합 구성하는 것도 많습니다.

 

🌐 Nginx vs Apache: 기본 웹 루트 경로 비교

항목NginxApache (Ubuntu 기준)
기본 문서 경로 /var/www/html /var/www/html
기본 설정 파일 /etc/nginx/sites-available/default /etc/apache2/sites-available/000-default.conf
메인 설정 파일 /etc/nginx/nginx.conf /etc/apache2/apache2.conf
서비스 재시작 sudo systemctl restart nginx sudo systemctl restart apache2

🔍 즉, 두 서버 모두 기본으로는 /var/www/html/index.html 파일을 보여줍니다.
이 파일을 수정하면, 브라우저에서 서버 IP로 접속했을 때 나오는 화면이 바뀝니다!

 

🛠 디렉토리 구조 & 설정 변경 요약

✅ 1. 웹 루트 디렉토리 변경하고 싶다면?

📌 Nginx:

sudo nano /etc/nginx/sites-available/default
 
nano 에디터에서 
 
root /var/www/html; # 이 줄을 원하는 경로로 수정

예: /home/ubuntu/my-site/public 등으로 변경 가능

 

📌 Apache:

sudo nano /etc/apache2/sites-available/000-default.conf


nano 에디터에서 

DocumentRoot /var/www/html

이 경로를 변경하면 기본 루트 경로가 바뀝니다.

✅ 2. 디렉토리 권한 설정

 
sudo chown -R $USER:$USER /var/www/html

 

혹은 

sudo chmod -R 777 /경로/디렉토리명


-R : Recursive (재귀적 → 디렉토리 내부 전체 적용) 대문자로 써야한대요 

777 : 소유자, 그룹, 기타 사용자 모두에게 읽기(r), 쓰기(w), 실행(x) 권한 부여

웹 루트 디렉토리를 본인 계정이 수정 가능하도록 변경

💡 안전한 권한 설정 예시

  • 웹 디렉토리:→ **웹서버 전용 사용자(www-data)**에게 소유권을 주고, 다른 사용자들은 실행/읽기만 가능하게
     
     
  • sudo chown -R www-data:www-data /var/www/html
  • 혹은
  • sudo chmod -R 755 /var/www/html
  • → **웹서버 전용 사용자(www-data)**에게 소유권을 주고, 다른 사용자들은 실행/읽기만 가능하게

✅ 3. 설정 적용 (재시작)

sudo systemctl restart nginx 
 
# 또는
 
sudo systemctl restart apache2

 

✅ 4. 방화벽 열기 (필요 시)

sudo ufw allow 'Nginx Full'
 
# 또는
 
sudo ufw allow 'Apache Full'

+ Recent posts