openresty 학습 기록
6024 단어 nginx
openresty 학습 기록
openresty 와 nginx 의 차이
run
docker 로 미 러 실행
docker run --name openresty -d -p 80:80 -v /Users/zhangyong/Documents/docker/openresty/openresty/conf:/usr/local/openresty/nginx/conf openresty/openresty:focal-nosse42
동시 다발 요청 을 포함 하여 lua 작성 방법 을 테스트 합 니 다.
server {
listen 80;
location / {
default_type text/html;
content_by_lua_block {
ngx.say("HelloWorld")
local res_add = ngx.location.capture(
"/add",{args={a=2, b=7}}
)
ngx.say(res_add.body)
local res1,res2 = ngx.location.capture_multi({
{"/add",{args={a=3, b=7}}},
{"/del",{args={a=3, b=7}}}
})
ngx.say(res1.body,"---",res2.body)
}
}
location /add {
internal; #
content_by_lua_block{
local args = ngx.req.get_uri_args()
ngx.say(tonumber(args.a) + tonumber(args.b))
}
}
location /del {
internal; #
content_by_lua_block{
local args = ngx.req.get_uri_args()
ngx.say(tonumber(args.a) - tonumber(args.b))
}
}
}
게임 방법
location = / {
rewrite_by_lua_block {
return ngx.redirect('/add'); #
}
}
ngx.req.get_uri_args、ngx.req.get_post_args
전 자 는 uri 요청 매개 변수 에서 왔 고 후 자 는 post 요청 내용 에서 왔 다.Nginx 는 부하 균형 장면 을 해결 하기 위해 탄생 했 기 때문에 기본적으로 body 를 읽 지 않 는 행위 입 니 다. post 매개 변 수 는 ngx.req.read_body()
를 추가 하거나 외부 에서 지정 lua_need_request_body on;
다음 과 같이 post 를 location 에 보 내 는 요청 이 필요 합 니 다.ngx. location. capture 는 비동기 입 니 다. res = ngx.location.capture(
'/foo/bar',
{ method = ngx.HTTP_POST, body = 'hello, world' }
)
응답 을 받 으 면 네 개의 요 소 를 포함 하 는 Lua 표 (res. status, res. header, res. body, res. truncated) 를 되 돌려 줍 니 다.res. truncated 는 절단, 불 값 표 시 를 통 해 res. body 가 절 단 된 데 이 터 를 포함 하 는 지 여 부 를 판단 합 니 다.이러한 데이터 가 절 단 된 이 유 는 하위 요청 이 복구 할 수 없 는 오류 가 발생 했 기 때 문 일 수 있 습 니 다. 예 를 들 어 원 격 응답 체 를 보 낼 때 너무 일찍 연결 을 중단 하거나 하위 요청 이 원 격 응답 체 를 받 을 때 시간 을 초과 한 것 입 니 다.
while true do
data = file:read(1024)
if nil == data then
break
end
ngx.print(data)
ngx.flush(true)
end
error_log logs/error.log info;
은 info 를 error / 기타 로그 단계 ngx.log(ngx.ERR, "this is error log")
location ~ ^/api/([-_a-zA-Z0-9/]+) {
access_by_lua_file lua/access_check.lua;
content_by_lua_file lua/$1.lua;
}
location /download {
access_by_lua_block {
ngx.var.limit_rate = 1000
}
content_by_lua_block{
ngx.say(1111)
}
}
access_by_lua_file
접근 을 통 해 반환 결 과 를 1. cab 에 저장 할 수 있 습 니 다.local http = require "resty.http"
local httpc = http.new()
local data = {}
local res, err = httpc:request_uri(
"http://127.0.0.1:81/hello",
{
method = "POST",
body = data,
}
)
local ok, t = pcall(test_method, str)
if not ok then
return nil
end
return t
set_by_lua*:
rewrite_by_lua*: 、 、 ( )
access_by_lua*: IP 、 ( iptable )
content_by_lua*:
header_filter_by_lua*: ( )
body_filter_by_lua*: ( )
log_by_lua*: ( , )
wget '127.0.0.1/download/1.cab'
lua 를 고치 고 다시 시작 하지 않 아 도 됩 니 다 lua_code_cache off
에 캐 시 를 사용 합 니 다. 이 cache 는 Nginx 모든 worker 간 에 공 유 된 것 입 니 다 location / {
default_type text/html;
content_by_lua_block {
local cache_ngx = ngx.shared.my_cache
cache_ngx:set('key', 111, 1000)
local value = cache_ngx:get('key')
ngx.say(value)
}
}
lua_shared_dict my_cache 128m;
ngx.timer.at(delay,function)
단계 에서 만 진정한 전역 변 수 를 정의 할 수 있 습 니 다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.