| 구분 | 웹서버 (Web Server) | WAS (Web Application Server) |
|---|---|---|
| 역할 | 정적 파일(html, css, js, 이미지 등) 제공 | 동적 처리(로그인, DB 조회, 로직 처리 등) |
| 예시 | Nginx, Apache | Tomcat, Node.js, Spring Boot, Express 등 |
| 처리 대상 | 클라이언트 요청 중 정적인 것 | 클라이언트 요청 중 동적인 것 |
| 항목 | 웹서버(Web Server) | WAS(Web Application Server) | 서블릿(Servlet) |
|---|---|---|---|
| 역할 | 정적 파일 응답(html 등) | 동적 요청 처리(Java 실행 등) | Java로 만든 요청 처리 코드 |
| 예시 | Nginx, Apache | Tomcat, Spring Boot, Jetty | LoginServlet, BoardServlet 등 |
| 코드 실행 | ❌ 안 됨 | ✅ 가능 | ✅ Java 클래스 |
| 위치 | 사용자와 제일 가까움 | 웹서버 뒤에서 동작 | WAS 안에서 실행됨 |
1. 정적/동적 분리로 성능 향상
웹서버가 정적 파일을 빠르게 처리하고,
동적 요청은 WAS로 넘겨줌 → 리소스 낭비 방지
2. 보안 강화
외부와 직접 연결되는 건 웹서버 (ex. Nginx)
WAS는 내부 네트워크에서만 동작 → 노출 최소화
3. 부하 분산 (Load Balancing)
웹서버가 여러 WAS로 요청을 분산시켜 줌 → 확장성 향상
4. 유지보수 용이성
정적 콘텐츠 변경은 웹서버만 손보면 되고,
로직 변경은 WAS만 수정 → 역할별로 관리 용이
5. 캐싱
웹서버는 정적 파일을 캐싱하여 더 빠르게 응답 가능 → 속도 ↑
[사용자 브라우저]
↓
[웹서버 (Nginx)]
├── 정적 파일 처리 (html, css, js)
└── 동적 요청 전달
↓
[WAS (Express, Spring 등)]
↓
[DB or 로직 처리]
💡비유로 이해하기
웹서버 = 안내데스크 직원
- 간단한 요청(“화장실 어디예요?”)은 직접 처리하고,
- 복잡한 요청(“계약서 상담이요”)은 전문가에게 연결해 줌.
WAS = 전문가- 복잡한 업무 처리 담당 (로그인 처리, 주문 로직 등)
윈도우 설치
https://nginx.org/en/download.html 에서 윈도우용 stable버전 다운로드
맥 설치
brew install nginx
윈도우 실행
c:\nginx 폴더에서 nginx.exe를 실행하거나, 명령 프롬프트에서 start nginx
맥 실행
sudo nginx
명령 프롬프트에서
cd C:\nginx
start nginx

Nginx 종료
nginx -s quit (정상종료)
nginx -s stop (강제종료)
Nginx 재시작
nginx -s reload
NginX 실행 중 확인
tasklist | findstr nginx



localhost 페이지 새로고침하면,

https://tomcat.apache.org/download-10.cgi
tomcat10 -> Core: 64-bit Windows zip 설치!

파일 경로가 굉장히 중요하다...!
cd C:\tomcat10\bin
톰켓 실행 : startup
톰켓 종료 : shutdown
나는 localhost:8080 이 어디선가 사용중이라,
localhost:8081 에서 실행시키기 위해 conf 폴더 안의 server.xml에서 8080부분을 8081로 수정했다.
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
/>

이렇게 뜨면 잘 된 것