【问题标题】:FastCGI and Nginx - Return HTTP StatusFastCGI 和 Nginx - 返回 HTTP 状态
【发布时间】:2014-02-17 10:00:35
【问题描述】:

我在 Nginx 后面有一个自定义 FastCGI 应用程序,我正在努力让 Nginx 返回除 200 状态代码之外的任何内容。

我尝试了以下方法:

  • 开启 fast_cgi_intercept_errors。

  • 通过ApplicationStatus 中的EndRequest 返回代码。

  • 在 StdError 流上返回错误。

  • 发送以下任何标头:

    • “状态:404 未找到”

    • “未找到 HTTP/1.1 404”

    • “X-PHP-Response-Code: 404”

    • “状态:404 未找到;”

    • “未找到 HTTP/1.1 404;”

    • "X-PHP-Response-Code: 404;"

任何帮助都会很棒,我很困惑。

【问题讨论】:

    标签: nginx fastcgi


    【解决方案1】:

    nginx 丢弃了"HTTP/1.1 304 Not Modified\r\n"

    nginx 使用(并吃掉)Status 标头。

    如果我的 fastcgi 程序返回标头 "Status: 304\r\n"

    然后我得到这个响应:

    HTTP/1.1 304
    Server: nginx/1.6.2
    Date: Sat, 21 May 2016 10:49:27 GMT
    Connection: keep-alive
    

    如您所见,没有 Status: 304 标头。已经被nginx吃掉了。

    【讨论】:

      【解决方案2】:

      这是一个如何使用 fcgi 和 C++ 返回 404 状态代码的示例。

      #include <iostream>
      #include "fcgio.h"
      
      using namespace std;
      
      int main(void)
      {
        streambuf * cin_streambuf = cin.rdbuf();
        streambuf * cout_streambuf = cout.rdbuf();
        streambuf * cerr_streambuf = cerr.rdbuf();
      
        FCGX_Request request;
      
        FCGX_Init();
        FCGX_InitRequest(&request, 0, 0);
      
        while (FCGX_Accept_r(&request) == 0)
        {
          fcgi_streambuf cin_fcgi_streambuf(request.in);
          fcgi_streambuf cout_fcgi_streambuf(request.out);
          fcgi_streambuf cerr_fcgi_streambuf(request.err);
      
          cin.rdbuf(&cin_fcgi_streambuf);
          cout.rdbuf(&cout_fcgi_streambuf);
          cerr.rdbuf(&cerr_fcgi_streambuf);
      
          cout << "Status: 404\r\n"
               << "Content-type: text/html\r\n"
               << "\r\n"
               << "<html><body>Not Found</body></html>\n";
        }
      
        cin.rdbuf(cin_streambuf);
        cout.rdbuf(cout_streambuf);
        cerr.rdbuf(cerr_streambuf);
      
        return 0;
      }
      

      【讨论】:

        猜你喜欢
        • 2019-05-29
        • 1970-01-01
        • 1970-01-01
        • 2019-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多