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

«   2024/03   »
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
Visitors up to today!
Today hit, Yesterday hit
daisy rss
티스토리 가입하기!
'nginx'에 해당되는 글 15건
2015. 11. 2. 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개까지 대기허용?

 

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

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

 

 

 

 

2014. 8. 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 등일 경우 파일이 존재하지 않으면, 프레임웍을 안타게 설정한다.

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

 

 

 

 

 

2014. 4. 9. 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

 

 

 

 

2014. 1. 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;

                ..

                ..

        }

 

 

 

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가 짱!

 

 

 

 

 

 

2012. 7. 9. 13:47

nginx에 재미 있는 Addons기능중에 echo  라는 기능이 있다.

nginx단에서 간단하게 특정 코드를 출력할 수 있는 기능이다.

 

https://github.com/agentzh/echo-nginx-module/tags

echo모듈을 다운받고,

 

nginx컴파일시 echo모듈의 경로를 아래와 같이 추가한다.

 

./configure --prefix=/usr/local/nginx --add-module=./echo-nginx-module

 

컴파일후 nginx.conf 에 아래과 같이 추가한다.

 

 location /hello {

    #default_type  text/plain;   # 옵션

    echo "hello, world!";
 }

도메인이 abc.com 이라면,

http://abc.com/hello

 

접속시 hello, world! 를 표시해줄것이다.

 

나같은 경운 crossdomain.xml 을 echo모듈로 사용했다. 로컬하드에 파일이 없어도 웹서버단에서 자동처리될 것이다.

location /crossdomain.xml {
   echo "<!DOCTYPE cross-domain-policy SYSTEM \"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd\">";
  echo "<cross-domain-policy>";
  echo "<allow-access-from domain=\"*\" />";
  echo "<allow-http-request-headers-from domain=\"*\" headers=\"*\" />";
  echo "</cross-domain-policy>";
}

 

http://abc.com/crossdomain.xml  하면 자동으로 나올것이다.

참고로 이 파일은 플래쉬파일에서 crossdomain관련 참조하는 파일이다.

 

 

2012. 5. 10. 10:35

nginx 에서 rewrite기능을 사용하면 기본적으로 request_uri 가 붙는다..

 

가령, www.abc.com/test/index.php?a=123  을 아래의 룰로 redirect하면

 

rewrite ^/test/           /   permanent;

 

www.abc.com/test/?a=123

결과

www.abc.com/?a=123

 

으로 되어 버린다~

 

아래와 같이 하면 깔끔하게 해결~

 

rewiret ^/test/            /?  permanent;

 

www.abc.com/test/?a=123

결과

www.abc.com/

 

사소하지만 이거 찾는데 시간이 좀 걸렸따아~;ㅋ

2012. 4. 12. 12:49

ssl 인증서는 서버당 한개의 인증서만 설치됩니다. (기본포트 443)

 

여러개를 설치하려면,

 

1. 멀티인증서를 사용한다. 그러나 최소4개의 도메인에 대한 인증서와

   만기일을 항상 맞춰야한다는 단점이 있으며, 인증서 추가시 모든인증서를 다시 받아야하는 단점이 있다.

2, 다른방법으로는 ssl 포트번호를 바꾸는방법인데..

   기본적으로 http://xxx:444 와 같이 별도 포트로 연결처리를 해야한다.

3. 서버에 IP를 추가할당하여 각각 IP로 인증서설치(nginx에서만 됨)

 

nginx에서 동일한 ssl 기본포트(443)로 여러개의 인증서를 설치하려면,

기본적으로 서버에 IP를 별도로 할당할 수 있어야합니다~ (아파치에서는 안됨)

 

$ ifconfig

bce0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=401bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO>
        ether 78:2b:cb:4a:74:36
        inet 110.x.x.92 netmask 0xffffff00 broadcast 110.92.254.255
        inet 110.x.x.93 netmask 0xffffffff broadcast 110.92.254.93
        media: Ethernet autoselect (1000baseTX <full-duplex,flowcontrol,master,rxpause,txpause>)
        status: active

 

그다음 nginx.conf 를 아래와 같이 기술

 

    server {
        listen               110.x.x.92:443;
        server_name     www.abc.com;

        ssl                  on;
        ssl_certificate          cert/chain.crt;
        ssl_certificate_key    cert/server.key;

        ..

        ..
    }

    server {
        listen               110.x.x.93:443;
        server_name     www.bbc.com;

 

        ssl                  on;
        ssl_certificate          cert2/chain.crt;
        ssl_certificate_key    cert2/server.key;

        ..

        ..
   }

 

 

두IP에 대한 443포트가 띄워져있는걸 볼 수 있네요~

 

$netstat -na | grep LISTEN
tcp4       0      0 110.x.x.93.443      *.*                    LISTEN
tcp4       0      0 110.x.x.92.443      *.*                    LISTEN

 

2011. 12. 14. 15:43


nginx로 proxy서버로 사용할때 목적지서버의 404나 403 등의 에러응답코드를
다른것으로 변조하고 싶은경우가 있다.

이럴경우 아래의 코드를 삽입해서 proxy서버에서 직접 콘트롤 가능하게 할 수 있다.

proxy_pass http://00.00.00.0;
xxx
proxy_intercept_errors on;

error_page 403 /403.jpg;

proxy서버에서 특정페이지로 redirect하거나 여러가지 일을 할 수 있다.
2011. 4. 26. 16:26
네이버 실시간 검색어 2,3위를 왔다갔다 하는 "허닭"





프로세스 164, 로드 3.x 대로
아직 여유있는 모습을 보여준다..

초당 새롭게 들어오는 방문자는 70 여명 수준.

고맙다. nginx~

prev"" #1 #2 next