Nginx 모듈 의 echo
Nginx 성능 왕:
Nginx 를 선택 한 이유:
배경
github 오픈 소스, openresty 작성 자https://github.com/openresty/echo-nginx-module
실례
위치 테스트:
location /test {
echo "test here";
}
curl "http://testecho.qidian.com/test"
백 엔 드 요청 시간 계산:
location /timed_hello {
#
echo_reset_timer;
echo hello world;
# 2.5s
echo_sleep 2.5;
#
echo "'hello world' takes about $echo_timer_elapsed sec.";
echo_reset_timer;
echo hiya igor;
echo_sleep 1;
echo "'hiya igor' takes about $echo_timer_elapsed sec.";
}
curl "http://testecho.qidian.com/timed_hello"
요청 에이전트:
location /echo_proxy {
# body
echo_before_body hello;
echo_before_body world;
# proxy pass
proxy_pass $scheme://10.247.165.120:10090/monitor/monitor.html;
# client body
echo_after_body hiya;
echo_after_body igor;
}
curl "http://testecho.qidian.com/echo_proxy"
서브 요청 시작:
# 1, epoll
location /main1 {
echo_reset_timer;
echo "start takes about $echo_timer_elapsed sec.";
# subrequests in parallel,
echo_location_async /sub1;
echo_location_async /sub2;
# 0s 2s
echo "took $echo_timer_elapsed sec for total.";
}
# 2,
location /main2 {
echo_reset_timer;
echo "start takes about $echo_timer_elapsed sec.";
#
echo_location /sub1;
echo_location /sub2;
# 3s 3s
echo "took $echo_timer_elapsed sec for total.";
}
# 1
location /sub1 {
echo_sleep 2;
echo hello;
}
# 2
location /sub2 {
echo_sleep 1;
echo world;
}
curl "http://testecho.qidian.com/main1" curl "http://testecho.qidian.com/main2"
여러 개의 키 요청 을 동시에 시작 합 니 다:
location /multi {
#
echo_subrequest_async POST '/tools' -q 'foo=Foo' -b 'hi';
echo_subrequest_async PUT '/tools' -q 'bar=Bar' -b 'hello';
}
location /tools {
# nginx
echo "querystring: $query_string";
echo "method: $echo_request_method";
echo "body: $echo_request_body";
echo "content length: $http_content_length";
echo '///';
}
curl "http://testecho.qidian.com/multi"
정적 자원 병합:
# , combo
location /merge {
default_type 'text/javascript';
echo_foreach_split '&' $query_string;
echo "/* JS File $echo_it */";
echo_location_async $echo_it;
echo;
echo_end;
}
curl "http://testecho.qidian.com/merge?/foo.js&/test.js"
if: nginx 의 if 문법 지원 이 너무 떨 어 지기 때문에 debug 는 설정 할 때 매우 필요 합 니 다.
location ^~ /if {
set $res miss;
if ($arg_val ~* '^a') {
set $res hit;
echo $res;
}
echo $res;
}
curl "http://testecho.qidian.com/if?val=abc"
curl "http://testecho.qidian.com/if?val=ddd"
그 중에서 관련 된 nginx 모듈 의 개발 개념
subrequest 와 upstream
upstream: 백 엔 드 서 비 스 를 방문 하 는 능력 을 제공 합 니 다.더욱 기본 적 인 동시에 nginx 우수 디자인 중의 epoll 모델 을 충분히 이용 하여 비동기 와 막힘 이 없 으 며 통신 방식 이 제한 되 지 않 고 통신 프로 토 콜 이 제한 되 지 않 습 니 다.흔히 볼 수 있 는 것 은 udp 와 tcp 입 니 다. 이 동시에 바 이 너 리 의 일부 대학교 포장 협의 에 협조 하면 nginx 와 백 엔 드 서 비 스 를 빈 틈 없 이 연결 할 수 있 습 니 다.
subrequest: 서브 요청 은 제3자 의 서 비 스 를 대상 으로 합 니 다. 예 를 들 어 귀하 의 사이트 네 비게 이 션 서 비 스 는 제3자 서비스, 예 를 들 어 시 나 닷 컴 날씨의 귀환 결과 에 의존 하면 서브 요청 방식 을 사용 할 수 있 습 니 다.그러나 제3자 의 서비스 협 의 는 http 에 국한 되 고 그 밑바닥 도 upstream 에 의 해 이 루어 진다.하지만 이에 비해 개념 과 출발점 은 다르다.
epoll
몇 가지 명사: IO 다 중 재 활용, 고성능 네트워크 모델, 동기 비동기, 차단 비 차단, 협 정 과 병발.추천 글:http://blog.csdn.net/tianmohust/article/details/6677985
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.