마스터 여러분, URL에 GET 및 POST 요청이 있는 서비스 매개변수의 값을 얻으려면 URL의 매개변수를 결정해야 합니다. nginx+lua를 사용해서 해봤습니다. 코드는 다음과 같습니다:
으아아아이제 문제는 GET을 사용하여 요청하면 모든 것이 정상이지만 POST를 사용하여 요청하면 Nginx에서 500 오류를 보고한다는 것입니다.
다음 코드를 사용하여 디버깅합니다.
으아아아GET 및 POST 요청 메소드에 인쇄된 서비스 매개변수의 값이 정확합니다.
이제 문제가 어디에 있는지 모르겠습니다. 하나님께 말씀해 달라고 구하세요. 고마움. . .
set_by_lua 사용 시 POST 제출인 경우 ngx.req.read_body() 호출 시 set_by_lua 모듈의 read_body 호출이 금지됩니다(set_by_lua 실행 실패: set_by_lua:6: 컨텍스트에서 API 비활성화됨) of set_by_lua
으아아아스택 추적: [C]: 'read_body' 함수에서 set_by_lua:6: 함수 <set_by_lua:1>);
하지만 다음과 같이 rewrite_by_lua를 사용할 수 있습니다:
location / {
도움이 되길 바랍니다. 또한, $service를 변수 이름으로 사용하지 않는 것이 좋습니다. 키워드가 시스템 변수와 충돌할 수 있습니다.
원본 포스터에 조언 좀 부탁드립니다. 왜 내 ngx.req.get_post_args()는 값을 얻지 못하는데 ngx.req.get_body_data()는 값을 얻는지 모르겠습니다. 이유는 무엇입니까?
ngx.req.get_post_args()는 rewrite_by_lua, access_by_lua, content_by_lua* 단계에서만 사용할 수 있으며, 사용하기 전에 ngx.req.read_body()를 호출하거나
lua_need_request_body 옵션을 켜서 이 모듈을 강제 실행해야 합니다. 요청 본문을 읽으려면 (이 방법은 권장되지 않습니다)