NGINX와 Apache(NGINX and Apache) 잘못 정리된 내용이 있다면 댓글부탁드립니다. 관련해서 알아두면 이해하는데 도움되는 내용(추후에 딥하게 알아보자.) socket 네트웤 데이터 교환을 위한 IO 인터페이스 또한 일종의 file이다.(리눅스) blocking/non-blocking mode IO(especially, Network I/O) 외부와 데이터를 교환하기 위한 기능. 소켓은 네트워크를 통해 외부와 데이터를 교환할 수 있는 IO 인터페이스. system call user/kernal space 일단 프로세스(user space상의)는 시스템의 file을 직접 다룰 수 없다. 따라서 소켓에 대한 핸들링을 하기 위해선 커널에 요청해야함. IO multiplexing(select(s..
DNS - 인터넷 디렉터리 서비스 인터넷 호스트에 대한 식별자중 하나로 host name이 있다.www.naver.com, www.google.com그러나 호스트 네임은 인터넷에서의 그 호스트 위치에 대한 정보를 거의 제공하지 않음또 호스트 네임은 길이가 바뀌고 알파뉴메릭 문자로 구성되기에 라우터가 처리하는 데 어려움이 있다.이런 이유로 호스트는 주로 IP 주소로 식별된다.IP 주소는 계층 구조여서 주소를 왼쪽에서 오른쪽으로 조사함으로써 그 호스트가 어디에 위치하는지에 대한 정보를 얻을 수 있다. DNS가 제공하는 서비스 사람은 좀더 기억하기 쉬운 호스트 네임 식별자를 좋아하지만, 라우터는 고정 길이의 계층구조를 가진 IP 주소를 좋아한다.이런 선호 차이를 절충하기 위해, hostname -> IP ad..
UDP 서비스 UDP는 최소의 서비스 모델을 가진 간단한 전송 프로토콜. UDP는 비연결형이라 두 프로세스간 통신 전에 핸드쉐이킹을 하지 않음 UDP는 비신뢰적인 데이터 전송 서비스 제공(UDP는 메시지가 수신 소켓에 도착하는 것을 보장하지 않음) UDP는 혼잡제어 방식을 포함하지 않음. 따라서 UDP의 송신 측은 데이터를 원하는 속도로 하위 계층(네트워크 계층)으로 보낼 수 있음. 이를 통해 일부 손실은 감수할 수 있으나 효율적이기 위해서 최소 전송 속도를 요구하기에 실시간 애플리케이션 개발자들은 때떄로 애플리케이션이 UDP상에서 수행되는 것을 선택함. 이로써 TCP의 혼잡제어와 패킷 오버헤드 문제를 회피가능함. 반면 대부분의 방화벽이 UDP 트래픽을 차단하도록 설정되어 있기 떄문에 설계자들은 점차적으..
HTTP의 Keep-Alive HTTP 프로토콜의 Keep-Alive는 HTTP Header의 일종이다.이는 HTTP/1.0에서 지원하지 않던 지속 커넥션을 가능하게 하기위해서 쓰였다. 그렇다면 지속 커넥션이 뭔지부터 보자. 지속 커넥션을 보기전에 HTTP의 커넥션에 대해 알아보자. HTTP/1.1이전에는 클라이언트와 서버사이에 트랜잭션 한번이 일어나면 HTTP Connection이 끊어졌다.그런데 이렇게 되면 TCP 커넥션을 맺는데 발생하는 지연과 느린 시작 지연이 트랜잭션마다 발생하기 때문에, 한 웹페이지에서 여러 이미지와 html을 요청해야하는 경우 성능이 매우 안 좋아진다. 그래서 이런 커넥션을 맺고 끊는데서 발생하는 지연을 없애기 위해서 한번 연결한 TCP 커넥션을 재활용하는 방법이 나왔는데, ..
콘텐츠 인코딩(Contents-Encoding)큰 HTML 문서 전송의 시간을 줄이기 위해 사용혹은 허락받지 않은 제3자가 볼 수 없게 콘텐츠를 암호화하거나 뒤섞어서 보내는 목적콘텐츠의 포맷과 연관gzip, compress, deflate, identity와 같은 알고리즘을 사용발송하는 쪽에서 콘텐츠에 적용함과정웹 서버가 Content-Type, Content-Length 헤더를 가진 원본 응답 메시지 생성콘텐츠 인코딩 서버(오리진 서버 혹은 다운스트림 프락시)가 인코딩된 메시지 생성; 이떄 인코딩된 메시지는 Content-Type은 같지만 Content-Length는 다름. 인코딩 서버는 Content-Encoding 헤더를 인코딩된 메시지에 추가하여 수신 측 앱이 디코딩가능하도록 함 (요청 메시지냐 ..
HTTP Header중에 Content-Type 필드가 있는데, 이는 엔터티 본문의 MIME 타입을 기술한다. (여기서 '엔터티'란, HTTP 메시지에 들어가는 실질적인 본문이라고 볼 수 있다.) (HTTP 메시지에는 요청/응답 라인, 헤더, 엔터티 본문 크게 3가지로 나뉜다 ) (MIME 타입은 HTTP가 웹에서 전송되는 객체 각각에 붙이는 데이터 포맷 라벨로써, Multipurpose Internet Mail Extensions의 약자이다. 이는 원래 각기 다른 전자메일 시스템 사이에서 메시지가 오갈 때 겪는 문제점을 해결하기 위해 설계되었다. 이는 이메일에서 워낙 잘 동작했기 때문에 HTTP에서도 멀티미디어 콘텐츠를 기술하고 라벨을 붙이기 위해 채택되었다. 웹 서버는 모든 HTTP 객체 데이터에 M..
트래픽이 높은 사이트는 아니더라도 웹 서비스를 운영하고 싶어하는 사람들은 웹 공간을 가지고 싶어 합니다.이런 사람들에게 웹 서버 하나는 사치일 것입니다. 따라서 웹 호스팅 업자들이 서버 한 대를 여러 고객이 공유하도록 해서 저렴한 웹 호스팅 서비스를 제공하는데, 이를 공유 호스팅/가상 호스팅이라고 합니다. 그리고 가상 호스팅 사용자들은 웹 서버를 구축해야할 정도로 트래픽이 증가하기 전까지는 비용절약을 위해 가상 호스팅을 사용할 것입니다. 가상 호스팅에는 4가지의 종류가 있습니다. URL 경로를 통한 가상 호스팅서버가 어떤 사이트를 요청하는지를 파악할 수 있게 URL에 특별한 경로 컴포넌트를 추가포트번호를 통한 가상 호스팅각 사이트별로 다른 포트를 할당하여 분리된 웹 서버의 인스턴스가 요청을 처리IP 주소..
HTTP Headers 위키피디아 발번역은 차차 책을 보면서 수정해 나갈 것임. 클라이언트에서 웹 서버로 Request를 보낼 때, 자주 사용하는 메소드로는 GET과 POST가 있다. GET 메소드는 웹 서버로부터 데이터를 요청하지만, 서버의 데이터를 수정하지는 않는다. POST 메소드는 서버의 상태를 변화시킬 수 있다. GET 방식의 전송되는 데이터로는 Request Line Request Header 가 있다. POST 방식의 전송되는 데이터로는 Request Line Request Header Message body 가 있다. Request Line은 HTTP메소드와 웹서버상에서의 자원에 대한 경로, 파라미터, 프로토콜 버전을 담고있다. GET / HTTP/1.1 Request Header에 들어갈..
nginx/apache의 경우 Virtual Host 라는 기능이 제공된다. www.a.com, www.b.com 이 같은 ip이더라도 도메인만으로 다른 위치의 데이터를 전달할 수 있는 기능인데, 이것은 어떤 것이고, HTTP header 중에 어떤 정보를 이용하여 구현될까? (배경지식) Virtual Host(가상 호스트)란? > 웹서버에 기본적으로 존재하는 호스트를 주호스트(main host)라고 한다. 하나의 웹서버에 main host이외에 별도의 홈디렉토리를 가진 여러개의 호스트를 설정하여 운용할 수 있다. 이는 주로 웹호스팅 서비스에 사용되고, main host이외의 호스트들을 가상 호스트라고 부른다. (가상호스트를 가장 적절하게 이용하는 것이 웹호스팅 서비스) 이런 웹호스팅 서비스를 위해서는 ..
User-Agent는 HTTP 클라이언트(브라우저, 봇, etc.)이 서버로 보내는 HTTP 요청을 보낼 때 전송하는 문자열이다. 이는 HTTP request 헤더값 안에 포함된다. User-Agent 구문은 "/ 와 버전명을 포함한 소프트웨어 제품 이름"으로 정의 되어 있다. User-Agent 문자열이 나타난다면 클라이언트에 의해 사용된 소프트웨어 프로그램 정보를 전달한다. 이는 통계 목적과 프로토콜 위반을 추적하기 위한 것이기 때문에 반드시 포함해야 한다. User-Agent는 흔히 Content negotiation를 위해 쓰이는데, Content negotiation은 각각 다른 버전의 document를 제공해주는 메커니즘이다. User-Agent는 접속한 유저의 디바이스에 대한 정보와 웹브라우..
- Total
- Today
- Yesterday
- TaskExecutor
- logging facade
- linux
- Spring
- logback
- NGINX
- logging
- slf4j
- webserver
- Apache
- JVM
- runtime data areas
- log level
- good practice
- async
- java
- lood
- object
- log
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |