개요

회사에서 서비스 개발 중 django server의 앞단에 nginx를 두자고 회의중에 말이 나왔었는데, 이 둘의 차이점을 좀 더 명확하게 정리하고파 포스팅 합니다.
포스팅 내용은 Youtube 우아한 테크 세미나의 알리님의 Web Server vs WAS를 참고했습니다.

Web Server란? (nginx, apache ..)

웹 브라우저(클라이언트)로 부터 HTTP 요청을 받아 HTML 문서와 같은 정적인 컨텐츠를 제공하는 프로그램

정적 컨텐츠?

  • 요청 인자값에 상관없이 달라지지 않는 컨텐츠(html, css, image ..)
  • 어느 사용자 요청이든 항상 동일한 컨텐츠

Web Server의 기능

  • 클라이언트로부터 HTTP 요청을 받을 수 있다.
  • 정적 컨텐츠(html, css, image ..)를 제공할 수 있다.
  • 동적 컨텐츠 요청 시 Web Application Server로 요청을 전달할 수 있다.

Web Application Server란? (spring, django, flask ..)

DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 프로그램

동적 컨텐츠?

  • 요청 인자에 따라 바뀔 수 있는 컨텐츠

Web Application Server의 기능

  • 클라이언트로 부터 HTTP 요청을 받을 수 있다. (* 대부분의 WAS는 Web Server 내장!!)
  • 요청에 맞는 정적 컨텐츠(html, css, image)를 제공할 수 있다.
  • DB조회나 다양한 로직 처리를 통해 동적 컨텐츠를 제공할 수 있다.

Web Server를 함께 사용하면 좋은 점은?

Web Application Server는 대부분 Web Server를 내장하고 있으므로, WAS만 활용해도 모든 요청을 처리할 수 있는게 아닐까? 라고 생각 할 수 있다.
왜 Web Server를 사용하는지 알아보자.

  1. 책임 분할을 통한 서버 부하 방지
  • 정적 컨텐츠는 Web Server, 동적 컨텐츠는 Web Application Server 에서 처리함으로서 서버의 부하를 방지 할 수 있다.
  1. 여러 대의 WAS를 로드 밸런싱
    로드 밸런싱 : 서버에 가해지는 부하를 분산 해주는 기능
  • 서버의 트래픽이 증가하여 더이상 요청을 받아들일 수 없다면 서버를 증설하여 이를 해결 할 수 있을것이다. 이 때 Web Server에서 여러 서버에 요청을 분산 시킬 수 있다.
  1. 여러 대의 WAS Health Check
  • 서버가 어떠한 오류로 인하여 요청을 받아들일 수 없는 상태가 된다면 오류가 발생한 서버로는 요청에 대해서 올바른 응답을 보내줄 수 없을 것이다. 이 때 Web Server 에서 WAS의 상태를 확인하여 오류가 발생한 WAS에는 요청을 전달하지 않도록 할 수 있다.
  1. 보안
  • 리버스 프록시 기능을 사용하여 외부에 서버의 IP를 노출시키지 않을 수 있다.

정리

서비스의 확장성, 안정성을 고려한다면 앞 단에 Web Server를 두는것이 유리할 수 있다.

컴퓨터 공학 전공이 아닌 학교 친구가 통신에 대해서 여쭤봐서, 실시간으로 안드로이드 기기와 통신할 수 있는 방법을 알아야 했는데, 내 컴퓨터를 웹서버로 만들고 외부에서 접속하는 방법을 간단하게 알아보았다.

 

1. apache 설치 및 환경설정

 

https://www.apachelounge.com/download/ 아파치 공식 웹 사이트에 접속하여 아파치를 다운로드한다.

 

다운로드 후 apache24 폴더를 원하는 경로에 지정해준다. 나는 D:\Apache24 로 설정했다.

그 후 conf 폴더로 이동하여 httpd.conf 에서 몇가지 설정을 해준다.

 

폴더 경로를 아래와 같이 변경해준다.

Define SRVROOT "d:/Apache24"

그리고 포트를 변경하고 싶다면 LISTEN 을 검색한다. 기본으로 80으로 설정되어 있지만, 나는 8080으로 변경해줬다.

Listen 8080

 

그 후 D:\Apache24\bin 폴더에서 httpd.exe 파일을 실행해준다.

 

localhost에 접속하여 화면이 잘 나오는것을 확인하자.

 

2. 포트포워딩 설정하기

 

여기까지 설정이 되었다면 다음은 포트포워딩을 할 차례이다. 

 

필자는 딜라이브 공유기를 사용하므로 딜라이브 공유기 환경설정 페이지로 이동하겠다.

 

http://192.168.200.254/ 로 접속하여 네트워크 > 포트 포워딩 페이지에서 아래와 같이 설정한다.

 

설명 : 본인이 원하는 이름으로 설정. 나는 develop으로 설정했다.

ip주소 : cmd 창에서 ipconfig 입력 후 IPv4 주소를 입력한다.

포트번호 : 위에 설정한 포트번호와 같은 번호로 입력한다.

프로토콜 : UDP, TCP 중 선택가능하다. 나는 TCP로 선택했다.

 

마지막으로, 네이버에 공인IP 검색하여 공인IP를 알아낸다.

 

 

공인IP:8080 검색하여 접속하면 끝이다.

 

이번에는 웹서버 연결으로 외부 망 접속을 시도했으나. 조만간 소켓을 통해서도 연결하는 방법을 공부해봐야겠다..

'TIL' 카테고리의 다른 글

2021.09.09  (0) 2021.09.10
2021.09.08  (0) 2021.09.08
[TIL] python OpenCV - threshold 함수로 경계선 얻기  (0) 2021.07.26
[TIL] python OpenCV - 1  (1) 2021.07.26
C언어에서 배열의 크기를 변수로 선언할 수 있을까?  (5) 2019.10.29

+ Recent posts