0Pricing
Lua Academy · 강의

Lua에서 HTTP 요청 처리하기

ngx API로 요청 헤더, 본문, 인수에 접근하고 응답을 작성합니다.

Lua에서 HTTP 요청 처리하기은(는) CoddyKit의 무료 Lua Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Lua Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

요청 메서드와 URI 읽기

ngx 네임스페이스에서 HTTP 메서드와 URI에 접근합니다.

-- content_by_lua_block
local method = ngx.req.get_method()
local uri    = ngx.var.uri
ngx.say("Method: " .. method .. ", URI: " .. uri)

요청 헤더 읽기

ngx.req.get_headers()는 요청 헤더의 테이블을 반환합니다.

local headers = ngx.req.get_headers()
local auth = headers["Authorization"]
if not auth then
  ngx.status = 401
  ngx.say("Unauthorized")
  ngx.exit(ngx.HTTP_UNAUTHORIZED)
end

쿼리 매개변수 읽기

ngx.req.get_uri_args()는 URL 쿼리 매개변수의 테이블을 반환합니다.

local args = ngx.req.get_uri_args()
local page = tonumber(args.page) or 1
local size = tonumber(args.size) or 20
ngx.say("Page: " .. page .. ", Size: " .. size)

요청 본문 읽기

ngx.req.read_body()를 명시적으로 호출한 후 요청 본문을 읽습니다.

ngx.req.read_body()
local body = ngx.req.get_body_data()
if not body then
  ngx.status = 400
  ngx.say("Empty body")
  return
end

JSON 본문 구문 분석

JSON 라이브러리(예: cjson)를 사용하여 요청 본문을 구문 분석합니다.

local cjson = require("cjson")
ngx.req.read_body()
local body = ngx.req.get_body_data()
local ok, data = pcall(cjson.decode, body)
if not ok then
  ngx.status = 400
  ngx.say("Invalid JSON")
  return ngx.exit(400)
end

응답 헤더 설정

ngx.say 또는 ngx.print를 호출하기 전에 ngx.header를 통해 응답 헤더를 설정합니다.

ngx.header["Content-Type"] = "application/json"
ngx.header["X-Request-ID"] = ngx.var.request_id

응답 작성

ngx.say(s)는 문자열과 줄 바꿈을 작성합니다. ngx.print(s)는 줄 바꿈 없이 작성합니다. ngx.exit(code)는 지정된 HTTP 상태 코드로 요청을 종료합니다.

ngx.status

응답 본문을 작성하기 전에 ngx.status = 404를 통해 HTTP 상태 코드를 설정합니다.

ngx.status = 404
ngx.header["Content-Type"] = "application/json"
ngx.say(cjson.encode({error = "Not Found"}))

내부 리디렉션

ngx.exec("/other/path")는 추가 HTTP 왕복 없이 다른 Nginx 위치 블록으로 내부 리디렉션을 수행합니다.

하위 요청

ngx.location.capture("/api")는 다른 위치에 하위 요청을 보내고 상태, 헤더, 본문이 포함된 테이블을 반환합니다.

local res = ngx.location.capture("/internal/auth")
if res.status ~= 200 then
  ngx.exit(403)
end

요청 컨텍스트 공유

ngx.ctx는 서로 다른 단계 처리기(액세스 → 콘텐츠 → 로그) 사이에서 데이터를 공유하기 위한 요청별 테이블입니다.

HTTP 처리 관련 질문

OpenResty에서 URL 쿼리 매개변수를 읽는 함수는 무엇인가요?

요약: HTTP 요청 처리

ngx.req 함수를 사용하여 메서드, 헤더, 쿼리 인수 및 본문을 읽습니다. 작성하기 전에 ngx.header와 ngx.status를 설정합니다. 출력에는 ngx.say/ngx.print를 사용합니다. 요청별 데이터는 ngx.ctx를 통해 공유합니다.

자주 묻는 질문

“Lua에서 HTTP 요청 처리하기” 강의는 무료인가요?

네 — “Lua에서 HTTP 요청 처리하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Lua Academy 강의 전체를 잠금 해제할 수 있습니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Lua에서 HTTP 요청 처리하기”에서 뭘 배우나요?

ngx API로 요청 헤더, 본문, 인수에 접근하고 응답을 작성합니다. 브라우저에서 직접 실행하는 실습 코드로 Lua Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Lua Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Lua Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“Lua에서 HTTP 요청 처리하기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Lua Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Lua Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. OpenResty 아키텍처
  2. Lua에서 HTTP 요청 처리하기
  3. Cosocket과 논블로킹 TCP
  4. 공유 메모리 사전
← Lua Academy(으)로 돌아가기