Redis와 함께 사용되는 Nginx 임베디드 lua 스크립트

WBOY
풀어 주다: 2016-08-08 09:23:16
원래의
1174명이 탐색했습니다.

0x00 Nginx 임베디드 Lua 스크립트에는 다음 기능이 있습니다.

  • 20k 동시 연결

  • Lua 스크립트는 Nignx에서 실행 가능 11가지 레벨이 Ngnix 기능을 확장하는 역할을 합니다

  • Lua는 매우 빠릅니다(등록 지침)

0x01 응용 시나리오

  • 웹 서버 측에서 요청 필터링 수행(예: WAF, Anti CC 등)

0x02 간단한 구성 프로세스

  1. 테스트 환경 Ubuntu Server 14.04.2 LTS

  2. 다운로드해야 하는 여러 모듈(설치 순서 및 내보내기 경로 문제에 주의)

  • Nginx 1.7.4

  • LuaJIT-2.0.4(Just-In-Time 컴파일러 Lua용)

  • ngx_devel_kit( Nginx 개발 키트)

  • echo-nginx-module( 더보기 쉘 스타일 기능을 Nginx 구성 파일에 적용)

  • lua-nginx-module(Embed Lua의 강력한 기능을 Nginx로)

0x03 luaJIT의 lib 및 inc가 환경 변수에 구성되지 않았기 때문에 lua.h를 찾을 수 없다는 등의 문제가 발생할 수 있습니다

다음과 같이 구성해야 합니다(실제 로컬 경로):

export LUAJIT_LIB=/usr/lib/lua

export LUAJIT_INC=/usr/local/include/ luajit-2.0

cp /usr/local/include/luajit-/* /usr/local/include/


있는 경우 서비스를 시작할 수 없는 상황에서 서비스를 볼 수 있습니다 tail /var/log/syslog 오류 보기

nginx를 시작할 수 없는 경우 tail /var/cache/nginx/error.log를 볼 수 있습니다

nginx bin 파일이 생성된 경우 nginx -V를 사용하여 구성 파일이 올바른지 확인할 수 있습니다.


다음 모듈이 없습니다:

PCRE

sudo apt-get install libpcre3 libpcre3-dev

zlib

sudo apt-get install zlib1g- dev

openssl

sudo apt -get install libssl-dev

ps: 특히 최신 버전을 다운로드하지 않도록 주의하세요. Nginx 버전에서는 위의 모듈 인터페이스를 지원하지 않을 수 있습니다. 저는 Nginx 1.7.4


그 중 0x02의 설치 단계에 설치 지침이 있습니다. 따라서 여기에서는 자세한 내용을 다루지 않겠습니다.

0x04 설치 후

nginx.conf 파일 수정(기본 경로/etc/nginx/nginx.conf):

  1. Lua 코드 추가

nginx 구성 다시 로드

sudo /etc/nginx/ sbin/nginx -s reload

효과:

2. lua 파일 추가:

lua_package_path, lua_code_cache 두 개를 추가합니다. Lua 캐시를 유지하고 디버깅을 용이하게 하려면 실제 프로젝트에서 열어야 합니다.)

전체 lua 파일의 디렉터리(lua 폴더의 파일은 다음과 같습니다. 다음에 새로 생성됨):

/etc/nginx/lua/hello.lua

/etc/nginx/lua/hello_redis.lua

/etc/nginx/lua/redis.lua


nginx.conf 파일 추가:



hello.lua 파일 내용:

ngx.header.content_type = " text/plain";

ngx.say("say hello from hello.lua");

추가된 모든 위치 코드:


그런 다음 nginx를 다시 로드하여 효과를 확인하세요.

3. redis 사용(새로 추가된 세 번째 redis):


전제 Ubuntu에 설치하려면 시스템에 이미 redis-server가 있다는 것입니다. sudo apt-get install redis-server

    

    hello_redis.lua 内容:

    

    local redis = "redis" 필요

> '6379')

    

    cache:set_timeout(60000)

    

    괜찮다면

ngx.say("연결 실패:", err)

            return


    end

    

    res, err = 캐시:set( "hello", "nginx_inline_lua의 redis")

    괜찮다면

            ngx.say("hello 설정 실패: ", err)


            return

    end

    

    ngx.say("set result: ", res)

    

    local res, err = 캐시:get("hello")

    res가 아닌 경우

            ngx.say("안녕하세요를 얻지 못했습니다: ", err)


            return

    end

    

    if res == ngx.null then

            ngx.say("hello notfound.")

            return


    end

    

    ngx.say("hello: ", res)

    local ok, err = 캐시:close()

    


    그렇지 않다면

        ngx.say("failed to close:", err)

        반환


end

    

    效果:

    


0x05 现재为止,简单的一个재Nginx 中内嵌Lua并且Redis의 过程已经完成了, 配置时候可能有很多细small问题,但是不要放弃,坚持下去,信你就会成功。

0xFF 附加资料:


    http:/ /wiki.nginx.org/HttpLuaModule

    http://openresty.org/ (最先完成Nginx内嵌Lua의 중국어)

    http://tengine.taobao.org/

转载请注메이메이징处(个人论坛):http://www.byteway.net/thread-index-fid-4-tid-316.htm

以上就介绍了Nginx는 内嵌lua脚本,结合Redis使用,包括了方face的内容,希望对PHP教程有兴趣的朋友有所帮助.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!