SharedIT | 묻고 답하기(AMP)

안녕하세요 서버 구축중 질문이있습니다

웹 서버 구축에서 

web서버 was 서버 db서버가 되어있다고 알고있는데

내부 구동 구조가 좀 어렵습니다

web에서 ngnix설치후 실행시 80번 포트가 열려서 nat만 하면 접속이 가능하게는 했는데

내부 웹서버(was) 와 web서버 간에 연결되는 방법과

db서버는 msq를 설치해서 실행시키면 3306번이 열리는건 아는데 그다음 어떻게 연결되서 

구동되는건지 궁금합니다

구글링해도 이해하기가 어렵습니다 ㅠㅠ

Tags : 태그가 없습니다.

5개의 답변이 있습니다.

Genghis Khan
  0 추천 | 일 년 이상 전

명동쓰레빠 | 일 년 이상 전

자료 잘보았습니다. 

wansoo
  0 추천 | 일 년 이상 전

넓게 생각해보면...

클라이언트가 웹서버 접속해서 통신하는 것이나,

웹서버가 WAS 서버 접속해서 통신하는 것이나

웹서버가 DB 서버 접속해서 통신하는 것이나 

모두 큰 차이 없다고 생각하면 될 것 같습니다.

단지,

한대 컴퓨터에 여러개의 서비스를 올려서 각각이 서로 다르게 통신되게 하기 위해서 포트번호로 구분해서 접속하게 되겠고요.

포트 번호가 80이다 8080이다, 3306이다 등등의 서로 다른 포트 번호를 사용할 뿐인데요.

한대 컴퓨터에 여러개의 서비스가 동일한 포트 번호를 가진다면 서로 충돌이 생겨서 통신에 장애가 생기게 되기 때문에 80은 웹서버에서 사용하자, 21번은 FTP다, 22번은 SSH, 23번은 telnet 등으로 사용하자는 식으로 미리 약속을 해 둔 것 뿐이겠고요.

단독으로 사용하는 서비스라면 미리 약속으로 정해둔 포트를 사용하지 않고, 임의로 사용해도 서비스가 불가하지는 않습니다.  nginx 웹 서비스를 3306 포트로 서비스 올려도 웹 클라이언트가 3306 포트로 접속한다면 웹 서비스를 받을 수 있게 됩니다. 표준을 따르지 않아 공개적인 서비스에서 서로 충돌이 생길 수 있다는 문제가 있기 때문에 미리 약속으로 정해둔 어떤 서비스에는 어떤 포트를 사용한다는 것을 지키고 있을 뿐이랍니다.

각 서비스별로 서버와 클라이언트가 통신하는 방식에 정해진 약속(프로토콜)에 맞춰서 정보를 주고 받게 되는 것이 되겠고요.

예를 들어 서버가 한국말로 대화를 할 수 있게 구성해 뒀다면 클라이언트도 한국말로 대화할 수 있게해서 접속하면 된다는 것이 프로토콜이라 생각하면 되겠고요.

클라이언트가 서버에게 "첫번째로 보여주는 웹파일 보내줘" 한다면 서버가 클라이언트에게 "index.html" 파일을 보내 주게 되는 것이고요.

웹 서버가 DB 서버에 정보를 요청할 경우에는 웹 서버가 서버가 아닌 DB 클라이언트가 되어 DB 서버에게 "열시에 예약된 고객 정보알려줘" 라고 요청하면 DB 서버가 해당 정보를 웹서버에게 알려 주게 되는 것이고요.

웹 서버가 WAS 서버에게 정보를 요청할때도 웹서버가 WAS 클라이언트가 되어서 WAS 서버에게 처리를 요청하게 되겠고요.

WAS 서버가 DB 서버에 접속할때에도 WAS 서버가 DB 클라이언트가 되어서 DB 서버에게 정보를 요청하게 되는 것이고요.

빨간신발
  0 추천 | 일 년 이상 전

보통 apache(web) + tomcat(was) + DB로 구성한다고 하면

사용자는 브라우져를 통해 웹서버에 http 또는 https(80, 443)로 요청합니다.

ex) google.com

사용자의 요청을 받은 웹서는 이미지, html, js, css 같은 정적인 파일들은 불러와 사용자에게 직접 응답을 합니다. 사용자 정보, 게시판 내용같은 동적인 부분은 직접 처리가 불가하므로 와스에서 요청을 전달합니다.

보통 아파치에서 톰켓과 연동은 80xx포트를 이용합니다.

웹서버의 요청을 받은 와스는 사용자 세션정보나, 첨부화일 같은 직접 관리하는 부분은 웹서버에 해당 내용을 리턴해주고, 사용자 정보, 게시판 내용처럼 DB에서 관리하는 부분은 다시 DB서버에 요청을 보냅니다.

보통은 mysql 3306, mssql 1433, oracel 1521 등을 사용합니다.

db서버는 와스에서 받은 요청대로 데이터를 select, insert, update, delete 처리를 하고, 해당 결과를 와스에 리턴합니다.

와스서버는 db에서 받은 내용을 적당히 가공하고 웹서버에 리턴합니다.

웹서버는 와스에서 받은 내용을 사용자에게 최종 전달합니다.

보통 이런식으로 구성됩니다. 규모가 크지 않은 경우 아파치없이 톰켓+DB로 구성하기도 합니다.

php의 경우 와스없이 웹서버 + DB서버로 구성되기도 합니다.

언어 자체의 보안성도 중요하지만, 물리적인 구성으로 인해 php 계열보다는 java 계열의 보안이 더 좋은 이유이기도 합니다.

topkslee
  0 추천 | 일 년 이상 전

웹서버 구축은 말씀하신

Web 서버-WAS 서버-DB 서버 3tier 구성이 가장 일반적입니다.

큰 웹서버가 아니면 Web 서버+WAS서버를 합쳐서 운영하기도 하구요.

Web서버의 위치도 외부연결되는 DMZ영역에 두기도 하고 말씀하신 것처럼

내부에 두고 nat로 80 port만 허용하는 경우도 있습니다.


구동의 이해를 돕기 위해 구글링한 이미지입니다.


사용자가 브라우저로 web 서버의 80 port로 통신을 하구요.

web 서버와 was 서버간 보통 8080 port통신을 합니다.

was 서버와 mysql간 3306 port 통신을 하는 것이구요.

* 위에서 언급한 port는 회사에 따라 다르게 설정할 수 있습니다.

deerokgo
  0 추천 | 일 년 이상 전

아래에 참고하실 만한 내용을 올립니다

https://zunoxi.tistory.com/49



명동쓰레빠 | 일 년 이상 전

덕분에 여러가지 웨서버의 특성을 보고 갑니다.