ngx_lua 모듈 API 설명

7722 단어 학습 일지
ngx_lua 모듈 API 설명 \ # Ngx 명령
lua_code_cache on | off;
역할: Lua 코드 캐 시 를 열거 나 닫 으 면 다음 명령 에 영향 을 줍 니 다: setby_lua_file , content_by_lua_file, rewrite_by_lua_file, access_by_lua_file 및 강제로 불 러 오 거나 reload Lua 모듈 등. 캐 시가 열 릴 때 LUA 코드 를 수정 하려 면 nginx 를 다시 시작 해 야 하 며, 열 리 지 않 을 때 는 사용 하지 않 습 니 다.개발 단 계 는 일반적으로 캐 시 를 닫 습 니 다.
역할 영역: main, server, location, location if
lua_regex_cache_max_entries 1024;
역할: 알 수 없 음 (캐 시 정규 표현 식 처리 결과 의 최대 수량 을 제한 하 는 것 같 습 니 다)
lua_package_path .../path... ;
역할: lua 코드 로 작 성 된 확장 라 이브 러 리 경 로 를 설정 합 니 다.
예: luapackage_path '/foo/bar/?.lua;/blah/?.lua;;';
lua_package_cpath '/bar/baz/?.so;/blah/blah/?.so;;';
역할: C 확장 lua 라 이브 러 리 경 로 를 설정 합 니 다.
set_by_lua $var '' [$arg1 $arg2];
set_by_lua_file $var [$arg1 $arg2 ...];
역할: Nginx 변 수 를 설정 합 니 다. 변수 값 은 lua 스 크 립 트 에서 return 으로 되 돌아 가 복잡 한 할당 논 리 를 실현 할 수 있 습 니 다.여 기 는 막 혔 습 니 다. Lua 코드 는 아주 빨리 해 야 합 니 다.
또한 기 존의 ngx 변 수 를 매개 변수 로 Lua 스 크 립 트 에 전송 할 수 있 으 며, ngx. arg [1], ngx. arg [2] 등 방식 으로 접근 할 수 있 습 니 다.
역할 영역: main, server, location, server if, location if
처리 단계: rewrite
content_by_lua '';
content_by_lua_file luafile;
역할 영역: location, location if
설명: 콘 텐 츠 프로세서, 요청 처리 및 출력 응답, contentby_lua 는 nginx 프로필 에 짧 은 Lua 코드 를 직접 작성 하고 후 자 는 lua 파일 을 사용 합 니 다.
rewrite_by_lua ''
rewrite_by_lua_file lua_file;
역할 영역: http, server, location, location if
내부 URL 재 작성 이나 외부 재 설정 을 실행 합 니 다. 전형 적 인 예 를 들 어 위 정적 인 URL 재 작성 입 니 다.기본 값 은 rewrite 처리 단계 의 마지막 에 실 행 됩 니 다.
주의, rewrite 사용 중by_lua 시 rewrite 오픈log on;이후 에 도 해당 하 는 rewrite log 가 보이 지 않 습 니 다.
access_by_lua 'lua code';
access_by_lua_file lua_file.lua;
역할: 액세스 제어 에 사 용 됩 니 다. 예 를 들 어 저 희 는 내부 네트워크 ip 만 접근 할 수 있 고 다음 과 같은 형식 을 사용 할 수 있 습 니 다.
access_by_lua '
if ngx.req.get_uri_args()["token"] ~= "123" then  
 
return ngx.exit(403)  
end ';
역할 영역: http, server, location, location if
header_filter_by_lua 'lua code';
header_filter_by_lua_file path_file.lua;
역할: header 와 쿠키 설정;
lua_need_request_body on|off;
역할: 요청 체 를 읽 을 지 여부, ngx. req. readbody () 함수 의 역할 은 유사 하지만 공식 적 으로 는 이 방법 을 사용 하 는 것 을 추천 하지 않 습 니 다.
lua_shared_dict shared_data 10m;
역할: 모든 워 커 프로 세 스 간 에 공유 전역 변수 표를 설정 합 니 다.lua 스 크 립 트 에서 다음 과 같이 접근 할 수 있 습 니 다.
예: local shareddata = ngx.shared.shared_data 
10m 가 무슨 뜻 인지 모 르 겠 어 요.
init_by_lua 'lua code';
init_by_lua_file lua_file.lua;
역할 영역: http
설명: ginx Master 프로 세 스 가 설정 을 불 러 올 때 실행 합 니 다.보통 전역 설정 초기 화 / Lua 모듈 미리 불 러 오기
init_worker_by_lua 'lua code';
init_worker_by_lua_file luafile.lua;
역할 영역: http
설명: Nginx Worker 프로 세 스 가 시 작 될 때마다 호출 되 는 타이머 입 니 다. Master 프로 세 스 가 허용 되 지 않 으 면 init 에 만 있 습 니 다.by_lua 이후 호출;보통 설정 / 데 이 터 를 정시 에 끌 어 올 리 거나 백 엔 드 서비스의 건강 검진 에 사 용 됩 니 다.
######################
  방법 과 상수  ######################
ngx.arg[index]  			#ngx    ,      set_by_lua  set_by_lua_file          ,             .
ngx.var.varname  			#  NGINX    ,   lua        ,                  
ngx.config.ngx_lua_version 	#  ngx_lua     
ngx.config.nginx_version 	#nginx  
ngx.worker.exiting 			#  worker        
ngx.worker.pid				#  worker   PID
ngx.config.nginx_configure	#    ./configure    
ngx.config.prefix 			#    prefix  

core constans:				#ngx_lua     
	ngx.OK (0)
	ngx.ERROR (-1)
	ngx.AGAIN (-2)
	ngx.DONE (-4)
	ngx.DECLINED (-5)
	ngx.nil
http method constans:		#   ngx.location.catpure ngx.location.capture_multi      .
	ngx.HTTP_GET
	ngx.HTTP_HEAD
	ngx.HTTP_PUT
	ngx.HTTP_POST
	ngx.HTTP_DELETE
	ngx.HTTP_OPTIONS  
	ngx.HTTP_MKCOL    
	ngx.HTTP_COPY      
	ngx.HTTP_MOVE     
	ngx.HTTP_PROPFIND 
	ngx.HTTP_PROPPATCH 
	ngx.HTTP_LOCK 
	ngx.HTTP_UNLOCK    
	ngx.HTTP_PATCH   
	ngx.HTTP_TRACE  
http status constans: 		#http       
	ngx.HTTP_OK (200)
	ngx.HTTP_CREATED (201)
	ngx.HTTP_SPECIAL_RESPONSE (300)
	ngx.HTTP_MOVED_PERMANENTLY (301)
	ngx.HTTP_MOVED_TEMPORARILY (302)
	ngx.HTTP_SEE_OTHER (303)
	ngx.HTTP_NOT_MODIFIED (304)
	ngx.HTTP_BAD_REQUEST (400)
	ngx.HTTP_UNAUTHORIZED (401)
	ngx.HTTP_FORBIDDEN (403)
	ngx.HTTP_NOT_FOUND (404)
	ngx.HTTP_NOT_ALLOWED (405)
	ngx.HTTP_GONE (410)
	ngx.HTTP_INTERNAL_SERVER_ERROR (500)
	ngx.HTTP_METHOD_NOT_IMPLEMENTED (501)
	ngx.HTTP_SERVICE_UNAVAILABLE (503)
	ngx.HTTP_GATEWAY_TIMEOUT (504) 

Nginx log level constants:		#         ,       ngx.log      .
	ngx.STDERR
	ngx.EMERG
	ngx.ALERT
	ngx.CRIT
	ngx.ERR
	ngx.WARN
	ngx.NOTICE
	ngx.INFO
	ngx.DEBUG

##################
#API    :
##################
print()							#  ngx.print()     ,print()    ngx.log()
ngx.ctx 						#    lua table,    ngx      ,              ,      
ngx.location.capture() 			#       ,          。
ngx.location.capture_multi() 	#       ,          。
ngx.status 						#             .              .
ngx.header.HEADER 				#     http header   ,        。
ngx.req.set_uri() 				#       URI,        
ngx.set_uri_args(args) 			#  args           URI  .
ngx.req.get_uri_args()			#    LUA TABLE,          URL  
ngx.req.get_post_args()			#    LUA TABLE,         POST  
ngx.req.get_headers()			#              lua table.
ngx.req.set_header()			#       header    .              .
ngx.req.read_body()				#    ngnix                body  .[  ]
ngx.req.discard_body()			#          body
ngx.req.get_body_data()			#               body  
ngx.req.get_body_file()   	 	#          ,       
ngx.req.set_body_data()			#        BODY
ngx.req.set_body_file()			#  filename        file data。
ngx.req.clear_header()			#       
ngx.exec(uri,args)				#      ,  uri     
ngx.redirect(uri, status)		#  301  302    。
ngx.send_headers()				#        
ngx.headers_sent 				#            ngx.headers_sent=true
ngx.print(str)					#           
ngx.say()						#    ngx.print,  say        
ngx.log(log.level,...)			#  nginx  
ngx.flush()						#           (    )
ngx.exit(http-status)			#          
ngx.eof()						#           
ngx.escape_uri()				#URI  (      ,   , php urlencode   )
ngx.unescape_uri()				#uri  
ngx.encode_args(table)			# tabel   url  
ngx.decode_args(uri)			#           table
ngx.encode_base64(str)			#BASE64  
ngx.decode_base64(str)			#BASE64  
ngx.crc32_short(str)			#    crs32_short  
ngx.crc32_long(str)				#    crs32_long  
ngx.hmac_sha1(str)				#    hmac_sha1  
ngx.md5(str)					#  16  MD5
ngx.md5_bin(str)				#  2  MD5
ngx.today()						#      yyyy-mm-dd
ngx.time()						#       
ngx.now()						#      
ngx.update_time()				#     
ngx.localtime()					#   yyyy-mm-dd hh:ii:ss
ngx.utctime()					#  yyyy-mm-dd hh:ii:ss   utc  
ngx.cookie_time(sec)			#    COOKIE     
ngx.http_time(sec)				#     http header     		
ngx.parse_http_time(str)		#  HTTP    
ngx.is_subrequest 				#     (   true or false)
ngx.re.match(subject,regex,options,ctx)  	#ngx       ,      
ngx.re.gmatch(subject,regex,opt)			#      
ngx.re.sub(sub,reg,opt)			#     (  )
ngx.re.gsub()					#  
ngx.shared.DICT 				#ngx.shared.DICT   table                 
	ngx.shared.DICT.get	 
	ngx.shared.DICT.get_stale	 
	ngx.shared.DICT.set	 
	ngx.shared.DICT.safe_set	 
	ngx.shared.DICT.add	 
	ngx.shared.DICT.safe_add	 
	ngx.shared.DICT.replace	 
	ngx.shared.DICT.delete	 
	ngx.shared.DICT.incr	 
	ngx.shared.DICT.flush_all	 
	ngx.shared.DICT.flush_expired	 
	ngx.shared.DICT.get_keys
ndk.set_var.DIRECTIVE			#  

\ # 참고 문서:http://wiki.nginx.org/HttpLuaModuleZh#Core_constants ngx_lua 공식 문서
http://blog.csdn.net/imlsz/article/details/42915473  공식 API 의 주요 내용 번역
http://jinnianshilongnian.iteye.com/blog/2186448     대 ngxlua 문서 사용 에 대한 자세 한 예 가 있 습 니 다.
http://www.cnblogs.com/wangxusummer/p/4309007.html   대 ngxlua 의 모듈 방법 에 대한 간단 한 소개

좋은 웹페이지 즐겨찾기