Previously, r.internalRedirect() only stored the redirect URI and set
ctx->status to NGX_DONE. The stored URI was handled only by the js_content
finalization path.
As a result, when internalRedirect() was called from js_access, the access
handler returned NGX_DONE to the phase engine without starting the redirect,
leaving the request unfinished.
Now the internal redirect handling is shared by js_access and js_content, so
internalRedirect() works consistently in both handlers.