목록Backend (32)
만족
이것은 클라우드플레어의 프록싱이 켜진 상태에서 네트워크 정보를 시각화한 것이다. 클라우드플레어의 프록싱 기능을 사용하면, 인증서 설치 없이 https를 사용하거나 캐싱 등의 기능을 사용할 수 있지만 위에서 본 것 처럼 TTFB가 심하게 치솟는다. 이참에 웹 페이지 제공 서버와 리소스 전용 서버를 제외하고(이 경우 cdn을 이용했을 때 얻어지는 캐싱 효과가 더 크다고 판단했다) 나머지(api 서버 등)는 전부 자체 ssl을 사용하고 프록싱 기능은 꺼버렸다. 왜 일부 서비스에서 cloudflare cdn을 사용하지 않기로 했는지 작성할 것이다. TTFB가 늘어지는 이유가 뭘까 많은 블로그에서 찾아볼 수 있듯이 한국 망 사용료 관련 문제로 인해 무료 계정을 사용하면 외국에 있는 cdn으로부터 컨텐츠를 받아온다..
CPU 사용량 function get_server_cpu_usage() { $load = sys_getloadavg(); return $load[0]; } sys_getloadavg()는 길이가 3인 배열을 리턴하며, 각각 1분, 5분, 15분 평균 CPU 사용률을 의미한다. 배열의 0번 인덱스는 1분 평균 CPU 사용률을 의미한다. 이 값은 0~1사이의 값을 리턴하므로, 백분율로 표현하려면 $load[0]*100을 리턴한다. 메모리 사용량 function get_server_memory_usage() { $free = shell_exec('free'); $free = (string) trim($free); $free_arr = explode("\n", $free); $mem = explode(" ", ..
forever 모듈로 express 서비스를 배포한 후, 서비스가 죽는 현상이 관찰되었다. DDoS공격이 감지되긴 했지만, 서버가 아예 서버리는 상태가 아니라면 서비스가 죽은 후 다시 해당 서비스를 실행시키는 액션을 기대했지만 튕긴 상태로 유지될 뿐이였다. error: Forever detected script exited with code: 1 forever 에러 로그 맨 마지막엔 해당 오류가 찍혀 있었고, 그 외에 다른 특이사항은 없었다. 재미있는 것은 어떤 로그에서는 해당 로그가 표시된 뒤 서비스를 재시작한 이후, SIGTERM을 받고 프로세스가 죽어버리는 경우도 있었다. error: Forever detected script exited with code: 1 error: Script restar..
기존 사용하던 서버에서 Apache+php 조합을 사용하고 있기 때문에 nginx를 새로 설치하기는 부담스러워 apache+express 조합으로 서비스할 것이다. node/npm은 기존에 설치되었다고 가정한다. 설치하지 않았다면, soojae.tistory.com/25 를 참고해 설치를 진행하면 된다. apache의 경우엔 단순히 sudo apt-get install apache2 하면 된다. 버전 정보 Ubuntu 16.04 Apache 2.4.18 아파치 설정 sudo nano /etc/apache2/sites-avaliable/000-default.conf 를 이용해 vhost정보를 수정할 것이다. ... ServerName [도메인명(ex: test.com)] ServerAdmin [관리자 이메..
SQL Injection이란? SQL 주입(삽입)이라고도 부르며, 개발자의 의도대로 동작하지 않는 구문을 추가하여 피해를 입히는 공격 방식이다. SQL Injection 예시 const removeAccount= (accountId)=>{ database.executeQuery(`DELETE FROM Account WHERE id='${accountId}'`); }; 다음과 같은 코드가 있다고 해 보자. 유저가 정상적인 id를 입력할 때는 상관 없지만, 공격자가 accountId 값에 1' OR 1=1; -- 를 입력하게 되면 쿼리문은 다음과 같이 변한다. DELETE FROM Account WHERE id='1' OR 1=1; 따라서 모든 계정이 삭제되는 결과가 초래된다. 이런 식으로 데이터를 몽땅 날..
www.w3schools.com/php/phptryit.asp?filename=tryphp_compiler 실행 결과가 궁금하지만 내 프로젝트에 추가하긴 싫을 때 쓰면 유용하다. 속도는 기대하지 말 것...
참고: https://expressjs.com/en/4x/api.html#res Express 4.x - API Reference Express 4.x API express() Creates an Express application. The express() function is a top-level function exported by the express module. var express = require('express') var app = express() Methods express.json([options]) This middleware is available in Ex expressjs.com 자주 쓸 것 같은 프로퍼티에 대해 정리한다 Res.headersSent response heade..
참고: https://expressjs.com/en/4x/api.html#req Express 4.x - API Reference Express 4.x API express() Creates an Express application. The express() function is a top-level function exported by the express module. var express = require('express') var app = express() Methods express.json([options]) This middleware is available in Ex expressjs.com 자주 쓸 것 같은 프로퍼티를 정리한다 req.ip request client ip req.meth..