Nginx 제3자 모듈 시용 기
본 논문 에서 시도 한 몇 가지 모듈 은 대략 다음 과 같다.
상세 모듈 주 소 는 다음 과 같 습 니 다.
여 기 를 아 끼 기 위해 위의 모듈 을 모두 다운로드 하고 함께 컴 파일 합 니 다.PS: 더 게 으 르 면 openresty 프로젝트 를 시도 해 보 세 요. Nginx 와 확장 모듈 을 포장 해 드 립 니 다. @ agentzh 에 감 사 드 립 니 다.
여기 서 drizzle 과 lua 모듈 을 컴 파일 합 니 다. Nginx 를 컴 파일 하기 전에 이 두 라 이브 러 리 의 LIB 와 INCLUDE 파일 주 소 를 설정 해 야 합 니 다.
-- lua --
export LUA_LIB=/path/to/lua/lib
export LUA_INC=/path/to/lua/include
-- drizzle --
export LIBDRIZZLE_INC=/opt/drizzle/include/libdrizzle-1.0
export LIBDRIZZLE_LIB=/opt/drizzle/lib
Nginx 컴 파일 옵션 은 다음 과 같 습 니 다. 우선 순위 에 주의 하 십시오.
./configure --prefix=/opt/nginx \
--with-pcre=../pcre \
--add-module=../ngx_devel_kit \
--add-module=../set-misc-nginx-module \
--add-module=../memc-nginx-module \
--add-module=../echo-nginx-module \
--add-module=../lua-nginx-module \
--add-module=../srcache-nginx-module \
--add-module=../drizzle-nginx-module \
--add-module=../rds-json-nginx-module
Nginx 바 이 너 리 를 다시 컴 파일 합 니 다. Nginx 는 quit 를 다시 시작 해 야 합 니 다.일반 설정 업 데 이 트 는 reload 하면 됩 니 다.
1. kill -HUP `cat /path/nginx/logs/nginx.pid`
2. /path/nginx/sbin/nginx -s reload
PS: 상세 한 모듈 컴 파일 은 각 모듈 의 문서 설명 을 참고 할 수 있 습 니 다.
좋 습 니 다. 여기까지 Nginx 와 제3자 확장 이 설치 되 어 있다 고 가정 하 십시오.다음은 위 에 있 는 재 미 있 는 모듈 들 을 시도 해 보도 록 하 겠 습 니 다.
장면 1: Helloworld
프로그램 에서 hello World 는 매우 간단 합 니 다. nginx 의 hello 는 어떻게 실현 합 니까?
1. helloworld
location /hello1 {
echo "hello 1111!";
}
2. echo
location /hello2 {
echo "hello 2222!";
echo_location_async /hello1;
}
3. GET , name, name
location /hello3 {
set_unescape_uri $name $arg_name;
set_if_empty $name "None";
echo "hello, $name!";
}
。 2 subrequest non-blocking 。
echo timer , case 。
장면 2: Memcached HTTP 인터페이스
그 당시 에 형 은 서로 다른 언어의 api 를 호 환 하기 위해 memcached 작업 을 스스로 봉 했 습 니 다. 정말 힘 들 었 습 니 다. 그 때 는 tokyotyrant 의 http 인터페이스 가 부 러 웠 는데 지금 은 memc 모듈 효과 와 마찬가지 로 upstream 과 keepalive 기능 도 있 습 니 다.
location /memcached {
set $memc_cmd $arg_cmd;
set $memc_key $arg_key;
set $memc_value $arg_val;
set $memc_exptime $arg_exptime;
memc_pass 127.0.0.1:11211;
}
URL http://host:port/memcached?cmd=aaa&key=bbb&val=ccc
? url , memcached api,cluster 。
필드 3: 데이터베이스 조회
여 기 는 libdrizzle 모듈 을 사용 하여 MySQL, Drizzle, SQLite 데이터 베 이 스 를 호 환 합 니 다.가끔 은 조회 나 인 터 페 이 스 를 위해 언어 로 데이터베이스 조회 작업 을 밀봉 해 야 합 니 다. 지금 은 drizzle 모듈 을 통 해 쉽게 할 수 있 습 니 다 ~ ~
# MySQL
upstream mysql {
drizzle_server 127.0.0.1:3306 dbname=test user=smallfish password=123 protocol=mysql;
}
# url name, , json 。
location ~ '^/mysql/(.*)' {
set $name $1;
set_quote_sql_str $quote_name $name;
set $sql "SELECT * FROM users WHERE name=$quote_name";
drizzle_query $sql;
drizzle_pass mysql;
rds_json on;
}
# MySQL , 。
location /mysql-status {
drizzle_status;
}
필드 4: lua 확장
lua 언어 가 내장 되 어 있 습 니 다. 슈퍼 파워 입 니 다 ~ ~ 하고 싶 은 대로 하 세 요. 그리고 lua coroutine 의 풍 요 를 충분히 발휘 할 수 있 습 니 다. 타 오 바 오 양자 통 계 는 완전히 lua 확장 입 니 다.
location /lua1 {
default_type 'text/plain';
content_by_lua 'ngx.say("hello, lua")';
}
# url
location /lua2 {
content_by_lua '
local res = ngx.location.capture("/hello1")
ngx.say("data: " .. res.body)
';
}
Lua , WIKI 。
응, 여기 서 몇 가지 모듈 을 해 봤 어. 상세 한 예 는 각자 의 모듈 문 서 를 참고 할 수 있어. 안에 상세 한 설명 과 옵션 설정 이 있어.
이 를 통 해 알 수 있 듯 이 전통 적 인 프로 그래 밍 과 약간 다른 점 이 있 고 URL 을 바탕 으로 하 는 HTTP 인터페이스 로 전통 적 인 방식 보다 더욱 간단 하고 뚜렷 하 다.그리고 non - blocking 의 실현 은 더욱 가 볍 습 니 다.
END
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.