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;
}
评论
如何在响应中添加换行符?江南\ nstyle?
–tback
15年12月28日在13:52
@tback当然,你是
–cadmi
16 Mar 9 '16 at 9:10
add_header对我不起作用,因为它添加了另一个标头而不是替换旧的“ Content-type”。在我的响应中,我有2个'Content-type'标头:$ curl -v localhost / healthcheck / h1_pio> GET / healthcheck / h1_pio HTTP / 1.1> User-Agent:curl / 7.38.0> Host:localhost> Accept:/>
– jmcollin92
16-10-11在13:30
@ jmcollin92您的评论与提出的问题以及给出答案的问题无关。因为您显然拥有某种proxy_pass,fascgi_pass等...,但是我仍然回答位置/ healthcheck / h1_pio {#proxy_pass blablabla所需的东西; proxy_hide_header内容类型; add_header内容类型application / json; },请在正确的位置正确提问
–cadmi
16-10-12在23:43
如果您在其他地方声明了现有的default_type,则可能会发生@ jmcollin92。您可以使用default_type text / plain覆盖它;在location块中代替add_header指令。
–tjb1982
17年5月23日在17:55
#2 楼
您确实需要使用204,因为Nginx不允许200没有响应主体。要发送204,您只需在适当的位置对return 204;
使用return指令即可。评论
如果您尝试通过浏览器查看此内容,则看起来它什么也没做。那是故意的。您没有提供任何服务(204),它什么也不显示。为了证明您曾服役204,请使用curl。
– jnovack
19 Mar 19 '19在18:23
#3 楼
根据状态码定义,我相信您希望它是204,而不是200。响应中的资源需要200。否则我怀疑大多数理智的浏览器都会对此感到困惑。您可以使用的另一个是304,用于缓存内容。http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
评论
当然,将其设置为204,我该怎么做?尽管我非常怀疑任何浏览器都会被一个空的身体所迷惑。
– Theo
2010年11月1日15:55
空的主体仍然是带有对象的响应,例如空白的index.html。您要求提供的响应为200,但没有附加资源(不提供文件)。至于如何在nginx上精确地执行此操作,我需要亲自检查一下,我只在apache上执行过一次,所以我记不起来了。
–sandroid
10-11-1在20:05
304似乎会为调试和临时返回之类的东西发送所有错误的信号。
– Kzqai
16年2月5日在20:18
#4 楼
要完成@Martin Fjordval的回答,请注意是否正在使用这种配置进行运行状况检查。虽然
204
HTTP代码在语义上非常适合运行状况检查(成功指示不包含任何内容),但有些服务并不成功。即,我遇到了Google Cloud负载均衡器的问题。
评论
究竟。 Google Cloud Load Balancer要求输入200响应代码,以使实例处于健康状态,无论其身体如何。任何其他代码(甚至2xx代码)都将使运行状况检查失败。
– Maganap
20 Mar 18 '20 at 14:56
#5 楼
如果要返回格式化的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
块中。这是更多信息的文档。附言:我在大量服务器上运行着类似的配置(格式为html)。
评论
有人可能会争辩说,如果您不提供“文件”或任何内容,则应返回204 No Content,而不是200。