Pregunta Responde con 200 desde la configuración de Nginx sin entregar un archivo


He configurado Apache para que envíe una respuesta 200 sin entregar ningún archivo con esta línea de configuración

Redirect 200 /hello

¿Puedo hacer esto con Nginx? No quiero servir un archivo, solo quiero que el servidor responda con un 200 (solo estoy registrando la solicitud).

Sé que puedo agregar un archivo de índice y lograr lo mismo, pero hacerlo en la configuración significa que hay una cosa menos que puede salir mal.


91
2017-11-01 14:54


origen




Respuestas:


Sí tu puedes

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;
}

197
2018-03-27 14:05



¿Cómo agrego una nueva línea a la respuesta? gangnam\nstyle? - tback
@tback por supuesto, tienes razón - cadmi
Solo agrega la nueva linea! Las directivas de configuración de Nginx no están vinculadas a líneas individuales, se terminan con punto y coma. - Emil Vikström
add_header no funciona para mí, ya que agrega otro encabezado en lugar de reemplazar el antiguo 'Tipo de contenido'. En mi respuesta tengo 2 encabezados 'Tipo de contenido': $ curl -v localhost / healthcheck / h1_pio> GET / healthcheck / h1_pio HTTP / 1.1> User-Agent: curl / 7.38.0> Host: localhost> Acepto: / > <HTTP / 1.1 200 OK <Fecha: martes, 11 de octubre de 2016 13:27:53 GMT <Tipo de contenido: application / octet-stream <Content-Length: 25 <Conexión: keep-alive <Content-Type: application / json - jmcollin92
@ jmcollin92 que puede suceder si tiene un tipo_inicial predeterminado declarado en otro lugar. Puedes anularlo usando default_type text/plain; Dentro del bloque de ubicación en lugar de la add_header directiva. - tjb1982


Necesita usar un 204 ya que Nginx no permitirá un 200 sin cuerpo de respuesta. Para enviar un 204 simplemente usa el directiva de devolución a return 204; en el lugar apropiado.


18
2017-11-02 11:52





Según las definiciones del código de estado, creo que quieres que sea un 204, y no 200. 200 necesitan estar con un recurso en la respuesta, o sospecho que la mayoría de los navegadores sanos se confundirían con esto. El otro que puede usar es 304, que es para contenido en caché.

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


2
2017-11-01 15:39



Claro, que sea un 204, ¿cómo lo hago? Aunque dudo mucho que algún navegador esté confundido por un cuerpo vacío. - Theo
un cuerpo vacío sigue siendo una respuesta, con un objeto, como un index.html en blanco. Lo que pidió es proporcionar una respuesta 200 sin ningún recurso adjunto (no se entrega ningún archivo). En cuanto a cómo hacerlo exactamente en nginx, necesito buscarlo yo mismo, solo he hecho esto una vez en apache, y no puedo recordar nada. - sandroid
Parece que 304 enviaría todas las señales erróneas para cosas como depuración y retornos temporales. - Kzqai