| 여러장의 이미지 간단히 합치기 | 움직이는GIF만들기 | 썸네일 쉽게 만들기
BLOG main image
분류 전체보기 (78)
I am (0)
Today (1)
개발자이야기 (10)
나만의 유용한정보 (7)
서버관련 (38)
지름신 (5)
사진/여행 (1)
끄적끄적 (4)
골프 (8)
주식 (2)

memcached monitor tool 소개
§ 청명공자's NotePad §
ssh 접속시 rsa 인증을 통해서..
컴ⓣing의 주절거림 in textcube
«   2017/01   »
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        
804,504 Visitors up to today!
Today 154 hit, Yesterday 345 hit
daisy rss
티스토리 가입하기!
'서버관련'에 해당되는 글 38건


2016.07.27 11:11

zfs 파일 시스템은 기본적으로 압축값이 lz4 입니다~


# zfs get compression zroot/usr/local
NAME             PROPERTY     VALUE     SOURCE
zroot/usr/local  compression  lz4       inherited from zroot


lz4 는 openzfs의 새로운 압축 알고리즘입니다.


du 에서 -A 옵션을 주면 실제 파일 용량을 계산할수가 있습니다.


       DB 관련

      이미지 관련

 # du -h
 5.9G    .


 # du -Ah
 17G    .

 # du -h
 6.6G    .


 # du -Ah
 6.7G    .



이미지자체가 압축이라 이미지는 영향이 많이 없고.

DB파일들의 경우 상당히 물리적 파일시스템을 절약하고 있네요.


CPU성능과 RAM이 충분하다면, zfs를 사용하면서 i/o의 병목을 줄일수 있습니다.


참고로, zfs 파일시스템은 각 파티션별로 스냅샷을 자유자재로 줄수 있고,

원하는 스냅샷기준으로 복구도 가능합니다.

저작자 표시 비영리 변경 금지
신고
Name
Password
Homepage
Secret


2015.11.02 17:23

다음쪽 IP에서 무차별적으로 긁어가는 웹페이지 접속때문에

서버부하가 순간순간 너무 올라가서 골치거리였습니다.ㅠㅠ  (어디에 쓰는건지도 모른다는....)

 

IP도 C클래스 대역 몇개로 해서 특정IP를 막는것도 그렇고, agent를 보니 Daum Raam/Daum OA 이런식..ㅠ

통상적으로  검색엔진이 초당 수개~ 수십번 접속을 하지 않습니다.

 

 

 

일단 서버부하를 너무 유발하여 막기로 결정~ nginx로 막아보았네요..

 

nginx의 limit_req_zone 는  server / http/ location 절에만 기술이 가능하므로 아래와 같이 해결했네요.

 

    map $http_user_agent $limit_bots {
        default '';
        ~*(Daum|Raam) Daum;
    }

    limit_req_zone $limit_bots zone=antiddos:20m rate=3r/s;   # 초당 3개로 제한

 

당연히 적당한곳에 아래도 기술해야겠지요.

 

limit_req zone=antiddos burst=3;   # 초당 3개 제한이 초과될때 3개까지 대기허용?

 

검색엔진이 컨턴츠를 가져가려면, 서버부하를 고려해서 적당히 가져가는 센스를 보여줘야 하는데.

정도가 심해서 부득이 하게 막았네요.ㅠㅠ

 

 

 

 

저작자 표시 비영리 변경 금지
신고
Name
Password
Homepage
Secret


2015.04.07 15:21

요즘은 DDOS공격같은 방법보다는 웹쉘이나  XSS삽입공격등으로 사이트를 위협하고 있습니다.

 

특히 XSS관련 공격은 가장 빈번한 방법으로

대부분의 사이트들의 인증은 쿠키(세션)를 통한 방식으로 하기때문에 "쿠키 하이제킹 방지" 코드만

넣어도 어느정도 방어가 됩니다.

거의 모든 브라우져에서 지원되므로, 아래와 같은 방식으로 코드를 넣으면 도움이 됩니다.

 

 

쿠키 사용예)

PHP 5.x 이상

SetCookie("auth_xxx",$user,0,"/",".makeshop.co.kr",false, true);

PHP 4.x

SetCookie("auth_xxx",$user,0,"/",".makeshop.co.kr; httponly");

 

세션을 사용예) ( php5.2 이상)

php.ini 에서

session.cookie_httponly = true;

설정후 php 재가동

 

서버에서 보내는 쿠키 헤더값은 아래와 같네요.

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 07 Apr 2015 05:06:07 GMT
Content-Type: text/html
Connection: keep-alive
Set-Cookie: test=123; path=/; domain=test.co.kr; httponly

 

브라우져를 재가동후 사이트접속(로그인)후
주소창에
javascript:document.cookie
입력하여 확인해보면, 설정한 쿠키(세션) 이 보이지 않은것을 확인할 수 있습니다. :)

 

 

저작자 표시 비영리 변경 금지
신고
Name
Password
Homepage
Secret


2014.08.28 13:40

아파치도 비슷하지만, NGINX에서 PHP프레임웍을 사용하려면,

보통 아래와 같이 기술하게 된다.

 

        if (!-e $request_filename)     {

               rewrite ^/(.*)$ /index.php?/$1 last;
        }
        # 파일이 존재하지 않으면, 프레임웍의 index.php 로 rewrite

 

이런경우 없는 이미지파일 호출이나 css, js 파일을 호출하더라도.

파일이 없는경우 무조건 index.php 로 가게 되니 서버의 부담이 많아진다. (악의적인호출포함?)

 

아래와 같이 수정

 

        set $framework 'NO';
        if (!-e $request_filename)     {
               set $framework 'OK';
        }
        if ($uri ~ '(\.css|\.js|\.ico|\.gif|\.jpg|\.png|\.swf)')
               set $framework 'NO';
        }
        if ($framework = 'OK') {
               rewrite ^/(.*)$ /index.php?/$1 last;
               break;
        }

 

위와 같이 하여 확장자가 이미지파일이거나 css/js 등일 경우 파일이 존재하지 않으면, 프레임웍을 안타게 설정한다.

확장자는 알아서 추가..ㅎㅎ

 

 

 

 

 

저작자 표시 비영리 변경 금지
신고
Name
Password
Homepage
Secret


2014.04.09 09:56

php-fpm 실행시 unknown entry 'security.limit_extensions'  error

 

pph-fpm을 로컬에서 실행할때와 달리 다른서버의 php-fpm을 실행할때  'security.limit_extensions'  를

기술해주어야한다. (was서버처럼 분산처리할때)

 

Starting php-fpm server...
[08-Apr-2014 19:14:46] ERROR: [/usr/local/etc/php-fpm.conf:17] unknown entry 'security.limit_extensions'
[08-Apr-2014 19:14:46] ERROR: failed to load configuration file '/usr/local/etc/php-fpm.conf'
[08-Apr-2014 19:14:46] ERROR: FPM initialization failed

 

php-fpm.conf 에

security.limit_extensions  를  아무데나 기술하면 위와 같이 에러가 나므로

 

반드시 [www] 탭 하단에 기술해주어야한다.

 

[www]

security.limit_extensions = .php .php3

 

 

 

 

저작자 표시 비영리 변경 금지
신고
Name
Password
Homepage
Secret


2014.01.22 14:38

모니위키(moniwiki) 를 사용하시는분이 요즘 있을까 하지만,

자료찾기가 좀 쉽지 않아서 정리해봅니다.

 

http://wiki.test.com/wiki.php/xxxxxxxxxxx

이런식의 URL방식을 사용하기 때문에

모니위키를 nginx 에서 사용하시려면, 아래와 같이 추가하셔야하시면 됩니다

 

참고하세요~ ㅎㅎ

 

        try_files $uri $uri/ /wiki.php;


        location ~ \.php($|/) {
        

               include fastcgi_params;
                fastcgi_pass  unix:/var/run/fastcgi.socket;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;


                fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

 

                fastcgi_param HOST testserver

                fastcgi_read_timeout 120;

                ..

                ..

        }

 

 

 

저작자 표시 비영리 변경 금지
신고
Name
Password
Homepage
Secret


2013.08.01 18:30

bind보안패치로 최신bind설치후 재구동시 아래와 같은 에러가 나타난다.ㅠ

 

Jul 29 16:13:51 xxx named[73049]: zone xxx.net/IN: ''xxx.net'' found SPF/TXT record but no SPF/SPF
record found, add matching type SPF record

 


Adds a new configuration option, "check-spf"; valid values are
"warn" (default) and "ignore". When set to "warn", checks SPF
and TXT records in spf format, warning if either resource record
type occurs without a corresponding record of the other resource
record type. [RT #33355]

spf를 체크하는 루틴이 추가되면서 나오는 워닝인데.. 모든 zone의 파일을 spf설정을 TXT -> SPF로 변경이 힘들다면,

아래와 같이 하면 된다.

 

vi /etc/named.conf

 

options {
        version "bind xx";
        directory "/var/named";
        pid-file "/var/run/named/named.pid";

        check-spf ignore;

        ..

        ..
};

 

check-spf ignore; 추가!! ㅎㅎ

저작자 표시 비영리 변경 금지
신고
Name
Password
Homepage
Secret


2013.02.14 13:52

FreeBSD9.x / php5.3.x

 

--enable-fpm 설치시 아래와 같은 에러가 난다! ㅎ

 

/usr/local/php-5.3.9/sapi/fpm/fpm/fpm_sockets.c: In function 'fpm_socket_get_listening_queue':
/usr/local/php-5.3.9/sapi/fpm/fpm/fpm_sockets.c:400: error: 'struct tcp_info' has no member named 'tcpi_sacked'
/usr/local/php-5.3.9/sapi/fpm/fpm/fpm_sockets.c:405: error: 'struct tcp_info' has no member named 'tcpi_unacked'
/usr/local/php-5.3.9/sapi/fpm/fpm/fpm_sockets.c:409: error: 'struct tcp_info' has no member named 'tcpi_sacked'
*** [sapi/fpm/fpm/fpm_sockets.lo] Error code 1

 

아래와 같이 소스를 수정..

 

/usr/local/php-5.3.9]$ find . -name "fpm_sockets.c"
./sapi/fpm/fpm/fpm_sockets.c

 

vi ./sapi/fpm/fpm/fpm_sockets.c

 

tcpi_sacked -> __tcpi_sacked

tcpi_unacked -> __ tcpi_unacked

 

        if (info.tcpi_sacked == 0) {
                return -1;
        }

        if (cur_lq) {
                *cur_lq = info.tcpi_unacked;
        }

        if (max_lq) {
                *max_lq = info.tcpi_sacked;
        }

 

아래와 같이 수정

 

        if (info.__tcpi_sacked == 0) {
                return -1;
        }

        if (cur_lq) {
                *cur_lq = info.__tcpi_unacked;
        }

        if (max_lq) {
                *max_lq = info.__tcpi_sacked;
        }

 

재컴파일...    잘된다..ㅎㅎ

 

 

 

저작자 표시 비영리 변경 금지
신고
Name
Password
Homepage
Secret


2013.01.15 16:52

FreeBSD 9.1 이 릴리즈 되서 패키지 설치중

pkg_add -r 이 아래와 같이 안됨;

 

pkg_add -r rsync
Error: Unable to get ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9.1-release/Latest/rsync.tbz: File unavailable (e.g., file not found, no access)
pkg_add: unable to fetch 'ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9.1-release/Latest/rsync.tbz' by URL

 

 

http://www.freebsd.org/news/2012-compromise.html
일전의 보안이슈로 막아 놓은 모양;;

 

아래와 같이 해결은 가능하다..

 

c shell 일경우

 

setenv PACKAGESITE ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-current/Latest/

 

bash shell 일경우

 

export PACKAGESITE=ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-current/Latest/


와 같이 환경변수 처리후 가능해졌다.ㅎ

 

 

저작자 표시 비영리 변경 금지
신고
Name
Password
Homepage
Secret


2012.11.29 14:21

파일다운로드 파일서버겸용 웹서버 가 트래픽 1G로 FULL 서비스하게 되었네요.

 

웹서버는 nginx

1G FULL서비스상황에서 load는 0.x 대.. ㅎㅎ

 

 

1000M 랜카드 대역폭의 한계치 까지와서

서버에 붙어 있는 랜카드2개를 라운드로빈하기로 결정..

 

FreeBSD의 커널부터 패치 하기 시작!

device lagg

추가후 커널컴파일

 

vi /boot/loader.conf 에

if_lagg_load="YES"

추가! 후 리부팅

 

vi /etc/rc.conf 에 랜설정

ifconfig_bce0="up"
ifconfig_bce1="up"
cloned_interfaces="lagg0"
ifconfig_lagg0="laggproto roundrobin laggport bce0 laggport bce1"
ipv4_addrs_lagg0="27.x.x.171/25"

 

두개의 랜카드가 라운드로빈되면서 분산시작! ㅎㅎ

 

 

 LAN1 LAN2

 

분산이 잘되고 있네요.ㅎㅎ

 

그나저나 nginx가 짱!

 

 

 

 

 

 

저작자 표시 비영리 변경 금지
신고
Name
Password
Homepage
Secret