header already sent
mdounin at mdounin.ru
Fri Jul 6 01:38:46 UTC 2018
On Thu, Jul 05, 2018 at 05:44:00PM -0700, Dk Jack wrote:
> I have an nginx module. The purpose of my module is to inspect every
> request and make a binary decision (i.e drop or allow). When dropping, I am
> sending a custom status code and response message. I've setup my module
> handler to be called in the NGX_HTTP_REWRITE_PHASE. Things seem to be
> working fine for the most part except for a small issue.
> I am seeing 'header already sent' messages in the nginx error.log. In my
> handler, I create a context for my module and attach it request using
> the ngx_http_set_ctx call. I am using the context to store some info and
> also to prevent my module from processing the same request multiple times.
> My module processes the request only once.
> I get the 'header already sent' message only for a fraction of the
> requests. The messages seem to be generated only for requests that I
> allowed in my module. In my module handler, I return an NGX_DECLINED return
> code when I allow a request. The message is not generated for every allowed
> request but only for some of the allowed requests. When the error is
> generated it is always for POST request and not all POST requests cause
> this error message to be logged.
> Could someone explain what could be going on here or where I should look at
> next to debug this further? Any pointers are appreciated. Thanks.
The "header already sent" alert indicate that there is a serious
bug somewhere, resulting in an attempt to send a response header
If you see it for POST requests handled by your module, it likely
means that you are handling requests with bodies incorrectly.
More information about the nginx-devel