아파치의 역할과 express와의 차이

루카소·2021년 2월 7일
0

웹개발

목록 보기
1/11

아파치는 서버 컴퓨터가 http를 받아들일 수 있게끔 하는 웹서버프로그램이다.
즉 서버 역할을 하는 컴퓨터 그 자체와 분리시켜 생각할 필요가 있다. 서버는 말 그대로 웹사이트 소스를 가지고 있는 컴퓨터이며 설정이 되어 있지 않을 땐 외부에서 내 컴퓨터에 웹브라우저(http protocol)를 통해 접근할 수 없다.

외부에서 내 컴퓨터에 웹브라우저로 접근할 수 있게 서버 컴퓨터에서 외부와의 소통창구를 만들어 주는 것이 아파치이다. 외부와의 소통창구를 http protocol이라고 부른다. protocol에는 http말고도 ftp, ssh등이 있다.

아파치와 같은 역할을 하는 것들은 nginx가 있다. 웹서버가 없으면 서버는 웹서비스를 할 수 없다. 간혹 flask와 php등에는 작업시 테스트를 쉽게 하기 위해서 자체적으로 웹서버 기능을 지원하고 있지만 이것은 테스트용이므로 실서버에서 사용할 순 없다. 사용할 수 있지만 올바른 사용방식이 아니다. 구체적인 이유는 한명씩 들어온다면 상관 없겠지만 수십 수백명이 들어올 땐 트래픽을 핸들링 하는 기능이 없기 때문에 적절치 않다고 할 수 있겠다.

정리하면 아파치는 웹서버이며 niginx등이 있으며 이것이 없으면 누군가의 컴퓨터(즉 서버)에 웹브라우저를 통해 접근할 수 없다.


추가로..
아파치를 실행해서 http의 접근을 대기하고 있다고 해서 무조건 외부에서 접근이 가능한 것은 아니다. 해당 서버의 방화벽이 열려 있어야 접근이 가능한 것이다. 방화벽은 일종의 최전선에서 서버의 접근을 막는 규칙이라고 보면 된다. 방화벽이 닫혀 있다면 아파치나 엔진엑스가 켜 있더라도 접근할 수 없다.

aws ec2로 보면 securety group 이 있다.
인바운드 규칙이 있어야 접근이 가능하고 반대로 아웃바운드 규칙이 있어야 외부로 나갈 수 있는 것이다.


추가로..
그러면 아파치나 nginx를 이용해서 받는 것과 nodejs의 express의 서버로 받는 것의 차이는.. 가장 기본적인 부분에선 차이가 없다. 둘 다 유저의 요청을 받을 수 있다. 그러니까 아파치로 받아서 특정 파일을 응답해 주거나 express로 받아서 특정 파일을 응답해줄 수도 있다. 그러나 되도록 nginx로 일차적으로 받고 접근시 express로 포워딩 시켜주는 편이 낫다고 한다.

nginx와 express의 서버는 상하 레이어는 아니지만 상하 레이어처럼 차등해서 쓰는게 낫다는 의미다.

profile
rukkasso

0개의 댓글