2008-10-22 20 views
15

Estamos utilizando HAProxy como un equilibrador de carga en el momento, y que regularmente hace peticiones a las cajas de abajo para asegurarse de que están vivos mediante una solicitud OPCIONES:OPCIONES Tratamiento de la petición en nginx

OPCIONES/index.html HTTP/1.0

Estoy trabajando con la configuración de nginx como proxy inverso con el almacenamiento en caché (usando ncache). Por alguna razón, nginx devuelve un 405 cuando una solicitud de OPCIONES entra en juego:

192.168.1.10 - - [22/Oct/2008: 16: 36: 21 -0700] "OPCIONES /index.html HTTP/1.0 "405 325" - "" - "192.168.1.10

Al presionar el servidor web indirecto directamente, obtengo una respuesta de 200. Mi pregunta es: ¿cómo hacer que nginx pase esa respuesta junto a HAProxy o cómo puedo establecer la respuesta en nginx.conf?

+0

¿Este módulo está disponible todavía por casualidad? –

Respuesta

2

En la opción httpchk, puede especificar el método HTTP como esto:

httpchk GET http://example.com/check.php 

También puede utilizar el poste, o una llanura como URI /. Lo tengo comprobar PHP, ya que PHP se ejecuta de forma externa a Nginx.

20

Probablemente llegue tarde, pero tuve el mismo problema y encontré dos soluciones.

En primer lugar está engañando Nginx que un estado 405 es en realidad un 200 OK y luego PROXY_PASS a su HAProxy así:

error_page 405 =200 @405; 
location @405 { 
    root /; 
    proxy_pass http://yourproxy:8080; 
} 

La segunda solución es sólo para ponerse al solicitar las opciones y construir una respuesta para aquellos solicitudes:

location/{ 
    if ($request_method = OPTIONS) { 
     add_header Content-Length 0; 
     add_header Content-Type text/plain; 
     return 200; 
    } 
} 

Simplemente elija cuál le conviene más.

Escribí esto en un blog post donde puede encontrar más detalles.

Cuestiones relacionadas