I have a custom FastCGI application behind Nginx and I'm struggling to get Nginx to return anything other than a 200 status code.
I've tried the following:
Setting fast_cgi_intercept_errors on.
Returning codes via ApplicationStatus
in the EndRequest
.
Returning Errors on the StdError stream.
Sending any of following headers:
"Status: 404 Not Found"
"HTTP/1.1 404 Not Found"
"X-PHP-Response-Code: 404"
"Status: 404 Not Found;"
"HTTP/1.1 404 Not Found;"
"X-PHP-Response-Code: 404;"
Any help would be great, I'm very stuck.
nginx discards the "HTTP/1.1 304 Not Modified\r\n"
.
nginx uses (and eats) the Status
header.
If my fastcgi program returns the header "Status: 304\r\n"
.
Then I get this response:
HTTP/1.1 304
Server: nginx/1.6.2
Date: Sat, 21 May 2016 10:49:27 GMT
Connection: keep-alive
As you can see there is no Status: 304
header. It has been eaten by nginx.