과거에는 인터넷 사용자가 지금과 달리 많지 않았기에, 사용자가 원하는 페이지가 있다면 그때마다 만들어서 보여줘야했습니다. 그러나 점차 인터넷 사용자가 늘어나며 이는 문제가 되었습니다.
이 상황을 극복하기 위해, Was가 존재하게 되었습니다.
WAS는 클라이언트의 요청에 대해 적절한 데이터를 만들어주는 서버( Web Application Server)를 말합니다.
그리고 우리 주변의 Web Application Server(줄여서 WAS)는 Node.js, SpringBoot가 있습니다.
NGINX에서의 정적콘텐츠 호스팅
NGINX에서는 설정 파일이 있고, 웹 서버가 실행 될 때 이 설정 파일을 읽으면서 실행이 됩니다.
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html; <- 중요
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass PHP scripts to FastCGI server
#
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
# fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
참고
Reverse Proxy
리버스 프록시(Reverse Proxy)는 컴퓨터 네트워크에서 사용되는 개념으로, 클라이언트와 서버 간의 통신을 중계하고 보안, 성능 개선 등의 목적을 위해 중간에 위치하는 서버를 말합니다.
Q. 포워드 프록시와 리버스 프록시의 차이는??
A. 간단히, 포워드 프록시는 또 다른 외부(다른 컴퓨터) 서버로 요청을 보내주고, 리버스 프록시는 내부(같은 컴퓨터)의 다른 서버로 요청을 보내준다는 것입니다.
정리
Web server
- 정적 페이지 vs 동적 페이지
- 정적 페이지(Static Pages): DB에서 정보를 가져오거나 별도의 서버 처리 없어도 사용자들에게 보여줄 수 있는 페이지. 어떤 사용자가 오던 간에 동일한 페이지를 보여준다.
- 동적 페이지(Dynamic Pages): 어떤 요청에 의해 서버가 DB에서 정보를 가져와 처리하는 것과 같은 일을 수행하고 해당 결과가 포함된 파일을 보여주는 페이지. 사용자마다 다른 페이지가 보여질 수 있음.
- Web Server 웹서버
- 웹서버는 클라이언트가 요청한 정적인 페이지를 HTTP 프로토콜을 통해 제공해주는 서버
- 동적 요청이 들어오면 해당 요청을 웹서버가 처리할 순 없기 때문에 컨테이너(Container)로 보내주는 역할도 한다.
Web Application Server
- Web Container 웹컨테이너
- 동적인 데이터들을 처리하여 정적인 페이지로 생성해주는 소프트웨어 모듈
- 클라이언트로부터 동적 페이지 요청이 들어오면 웹서버는 정적인 요소만 보낼 수 있고, 동적으로 처리해야 하는 부분은 컨테이너가 대신 처리해서 웹서버에 정적인 파일로 만들어 보내준다.
- WAS(Web Aplication Server)
- 웹 서버로부터 오는 동적인 요청을 처리하는 서버로 웹 서버와 컨테이너를 붙여놓은 서버
- 클라이언트가 ‘My Page’를 요청하면 WAS는 자신의 라우팅 정보를 통해 어떤 처리를 해야할지 살펴본다.
- 마이 페이지는 개인의 고유 정보를 보여주는 페이지므로 WAS는 DB에서 사용자 데이터를 가져온다.
- 가져온 데이터를 처리해서 웹서버에 보내면 웹서버는 해당 정보로 정적 페이지를 구성해서 클라이언트에게 보내준다.
- Web Server + WAS 조합의 장점
- 기능을 분리하여 서버 부하 방지: WAS는 DB 조회나 다양한 로직을 처리하느라 바쁘기 때문에 단순한 정적 컨텐츠는 Web Server에서 빠르게 처리하고 제공하는 것이 좋다.
- 자원의 절약: 만약 Web Server만 사용한다면 같은 페이지더라도 각 사용자에 따라 요청 값을 모두 따로 미리 만들어 놓아야 한다. 하지만 이렇게 수행하기에는 자원이 절대적으로 부족하다.
- → WAS를 통해 요청에 맞는 데이터를 DB에서 가져와 그떄 그때 결과를 만들어 제공함으로써 자원을 효율적으로 사용할 수 있음
- 물리적으로 분리하여 보안 강화: SSL에 대한 암복호화 처리에 Web Server 사용
- 여러 대의 WAS 연결시 장애 극복 및 처리에 유리
- 여러 웹 어플리케이션 서비스 가능
Reverse Proxy
- 프록시(Proxy)란?
- 프록시는 ‘대리’라는 의미를 가지고 있으며, 서버와 서버 사이의 중계기 역할을 한다고 보면 된다. 프록시 서버는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다.
- 보안상 직접 통신할 수 없는 둘 사이에서 대리로 통신 수행해 보안성, 성능, 안정성을 향상 시킨다.
- 포워드 프록시 (Forward Proxy) => 프록시 서버 위치: 클라이언트 바로 뒤
- 내부망에서 클라이언트와 Proxy 서버가 통신하여 인터넷을 통해 외부 데이터를 가져온다.
- 서버 요청시 먼저 포워드 프록시 서버를 호출하고 프록시가 서버에 요청 보냄 → 서버에게 클라이언트 감출 수 있음
- 장점: 클라이언트 보안, 캐싱, 암호화
- 리버스 프록시(Reverse Proxy) => 프록시 서버 위치: 웹서버/WAS 바로앞
- 내부망에서 Proxy 서버와 내부망 서버가 통신하여 인터넷을 통해 요청이 들어오면 Proxy 서버가 받아서 응답해준다.
- 프록시 서버 url로만 접근 가능→본서버의 IP 정보를 숨길 수 있다.
- 장점: 로드 밸런싱(프록시 서버 여러개를 본 서버 앞에 두면 특정 서버 과부화를 막아줌), 서버 보안, 캐싱, 암호화
'Node j.s > UMC' 카테고리의 다른 글
[chap 6] API URL의 설계 & 프로젝트 세팅 (0) | 2024.05.12 |
---|---|
[Chap2] AWS (VPC & Internet Gateway & EC2) (0) | 2024.04.16 |
[Chap1] 서버란 무엇인가 ? (1) | 2024.04.07 |