如何从 Nginx 回复 200,而不提供文件?

如何从 Nginx 回复 200,而不提供文件?

我已将 Apache 配置为返回 200 响应,而不使用此配置行提供任何文件

Redirect 200 /hello

我可以用 Nginx 做到这一点吗?我不想提供文件,我只希望服务器响应 200(我只是记录请求)。

我知道我可以添加一个索引文件并实现同样的效果,但是在配置中执行此操作意味着出错的可能性会降低。

答案1

是的你可以

location / {
    return 200 'gangnam style!';
    # because default content-type is application/octet-stream,
    # browser will offer to "save the file"...
    # if you want to see reply in browser, uncomment next line 
    # add_header Content-Type text/plain;
}

答案2

如果你想退货格式化 HTML 文本,不提供 HTML 文件:

location / {
    default_type text/html;
    return 200 "<!DOCTYPE html><h2>gangnam style!</h2>\n";
}

如果你想回复一条短信无 html 格式,正如答案所指出的:

location / {
    add_header Content-Type text/plain;
    return 200 'gangnam style!';
}

如果你只是想要返回 200:

location / {
    return 200;
}

只需记住:location块内有server块。这是文档了解有关该主题的更多信息。

PS:我在许多服务器上运行着类似的配置(格式化的 html)。

答案3

您确实需要使用 204,因为 Nginx 不允许没有响应主体的 200。要发送 204,您只需使用return 指令return 204;适当的位置。

答案4

根据状态代码定义,我相信您希望它是 204,而不是 200。200 需要与响应中的资源一起出现,否则我怀疑大多数正常的浏览器都会对此感到困惑。您可以使用的另一个状态是 304,它用于缓存内容。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

相关内容