20140911

NGINX + SSL + SPDY

SPDY 란? http://helloworld.naver.com/helloworld/140351


NGINX 컴파일 옵션




NGINX 설정



Firefox Add-on

https://addons.mozilla.org/ko/firefox/addon/spdy-indicator/

20140817

nginx 기본 정보 수정

이 요약은 사용할 수 없습니다. 이 글을 보려면 여기를 클릭하세요.

nginx 국가별 대역폭 (using geoip)

Nginx 에서 GeoIP 를 이용해 국가별로 접속 대역폭을 설정할수 있습니다.
Maxmind 에서 제공하는 GeoLite 국가  데이터베이스 CSV 를 다운로드 합니다.

# wget  http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
# unzip GeoIPCountryCSV.zip
Archive:  GeoIPCountryCSV.zip
inflating:  GeoIPCountryWhois.csv

CSV 내용을 국가별 아이피 대역, 국가명으로 간단하게 Perl Script 로 분리 하여 따로 저장  합니다.

변경 전 :  "1.11.0.0","1.11.255.255","17498112","17563647","KR","Korea, Republic of"
변경  후 : 1.11.0.0/16 KR;

# wget  http://mirror.yongbok.net/ruo91/nginx/script/geo2nginx.pl
#  chmod +x geo2nginx.pl
# ./geo2nginx.pl <  GeoIPCountryWhois.csv >  /usr/local/etc/nginx/nginxGeo.txt

nginx.conf 파일의 http 부분에 추가

geo $country {
    default no;
    include  /usr/local/etc/nginx/nginxGeo.txt;
}

가상호스트 부분인 server 부분에  대역폭 설정 구문을 추가

if ($country ~ ^(?:US|CA|ES)$ ){
    set  $limit_rate 500k;
}
if ($country ~ ^(?:RU|CN)$ ){
    set $limit_rate  1k;
}


nginx 대역폭 제한

nginx.conf 수정

location ... { 

    최대 대역폭
    limit_rate 200k;

    일정 용량을 전송 제한
    limit_rate_after 원하는용량M;

}

20140711

set linux swap

swap메모리는 주 메모리가 부족할 때 하드디스크와 같은 공간을 메모리로 사용하기 위한 가상메모리이다.(윈도우에선 가상메모리라 함)

그런데, 오늘은 주 메모리는 남아도는데 swap메모리가 부족한 어처구니없는 상황이 벌어졌으니….



머 이번 포스팅은 이런 현상의 원인이 아니라 걍 swap메모리 늘리기니깐 상황분석은 생략..(실은 잘 몰라서..-ㅅ-;;)



swap영역을 확보하기 위해서는 2가지 방법이 있다고 한다.

1. swap 파티션 구성

2. swap 파일 생성

위 2가지 중 swap 파일을 생성하는 것이 상대적으로 용이하기 때문에 swap파일을 생성, 설정, 활성화 하는 것을 이용하였다.



1. swap파일의 생성 – root(/)에 512MB의 swapfile_temp라는 것을 만든다.

# dd if=/dev/zero of=/swapfile_temp bs=1024 count=524288

              (참고 : 4G 로 생성할 경우 count=4000000)



2. swap파일 설정 - v1옵션은 new스타일, v0옵션은 old스타일이다.

# mkswap –v1 /swapfile_temp

3. swap파일 활성화

# swapon /swapfile_temp

이 후 top 또는 free명령을 통해 늘어난 swap공간을 확인할 수 있다.



* 활성화된 swap공간을 삭제하기 위해선 swapoff명령을 사용한 후 해당 파일을 삭제하면 끝~

* 리부팅시 swap 용량이 전상태로 돌아가므로 /etc/rc.d/rc.local 에 맨 마지막 명령어(swapon /swapfile_temp)를 추가해 준다.

20140608

리틀 엔디안 빅 엔디안

오늘은 패킷 분석과 조금은 다른 이야기를 꺼내볼까 한다. 머 그렇다고 패킷 분석과는
동떨어진 내용은 아니다. 분석을 하다보면 필요한 내용이기 때문이다. 앞으로 계속
여러가지 내용을 소개하는데 있어, '바이트 오더(Byte Order)' 를 설명할 필요가 있을거 같아
잠깐 짚고 넘어가볼까 한다.

바이트오더 하면 떠오르는게 리틀 엔디안(Little Endian) 과 빅 엔디안(Big Endian) 이다.
프로그램이나 리버싱 과정에서 헷갈리기도 하는 부분이다.

우선 리틀 엔디안은 주로 인텔(Intel)프로세스 계열에서 사용하는 바이트 오더 이다.
메모리 시작 주소가 하위 바이트부터 기록된다는 것이고 그 반대로 빅 엔디안은
메모리 시작 주소에 상위 바이트부터 기록된다. 주로 UNIX 시스템인 RISC 프로세서
계열에서 사용하는 바이트 오더이다. 이렇게 메모리에 저장하는 방식이 차이가 있다보니
가끔 혼돈 스럽기도 하다. 다음 도표는 메모리기 기록되는 것을 쉽게 이해할 수 있도록 기술되어 있다.

[도표] 레지스터와 메모리 위치 매핑 관계 , 출처 : 위키피디아(www.wikipedia.org)

우리가 패킷분석때 많이 보게되는 네트워크 프로토콜은 기본적으로 빅 엔디안 표현이다.
빅 엔디안을 표현하면 아래와 같다.

increasing addresses  →
...0Ah0Bh0Ch0Dh...

[출처] 위키피디아

0x0A 는 메모리 하위 주소에 위치하게 되고 차례로 0x0B , 0x0C, 0x0D 가 온다.
읽는 순서는 왼쪽 -> 오른쪽 순서로 읽으면 되므로 사람이 보기에는 가장 편한 방식이다.

다음 리틀 엔디안은

increasing addresses  →
...0Dh0Ch0Bh0Ah...

[출처] 위키피디아

빅 엔디안 과 반대로 0x0D 가 메모리 하위 주소에 오게된다. 상위바이트로 올라가면서
차례로 나머지 값이 들어간다. 리틀 엔디안 또는 빅 엔디안에 따라 받아 들이는 쪽에서
처리를 잘못하게 되면 엉뚱한 형태가 되므로 주의가 필요하다. 예를 들어, 취약점 등을
리버싱 하는 과정에서 해당 값 들이 기록되어 있는 형태를 제대로 이해할 필요가 있다.

일단 여기서는 쉽게 요약 정리하면,
빅 엔디안값은 왼쪽-> 오른쪽 순서로 읽고, 리틀 엔디안값은 반대로 오른쪽->왼쪽 순서로
읽으면 된다는 점이다. 그리고 네트워크 상에서 표준으로 이용되는 프로토콜은
네트워크 바이트 오더인 빅 엔디안으로 생각하자.

복잡한게 싫다면 이것만 알고 있으면 된다.

참고로 다음은 리틀/빅 엔디안을 이용하는 시스템이다.

[리틀 엔디안]
[빅 엔디안]
  • AIX on POWER
  • AmigaOS on PowerPC and 680x0
  • HP-UX on Itanium and PA-RISC
  • Linux on MIPS, SPARC, PA-RISC, POWER, PowerPC, 680x0, ESA/390, and z/Architecture
  • Mac OS on PowerPC and 680x0
  • Mac OS X on PowerPC
  • MVS and DOS/VSE on ESA/390, and z/VSE and z/OS on z/Architecture
  • Solaris on SPARC

우리가 주로 이용하는 시스템은 인텔 기반의 리눅스와 윈도우이므로 리틀 엔디안 방식이다. 단, 네트워크를 통해 전송되는 것은 빅 엔디안이다.

[참고]
1. 위키피디아
2. Understanding Big and Little Endian Byte Order
 


Articles