2011-01-01 25 views
7

Estoy recibiendo mucho tráfico a mis páginas de php pero sin la variable $_SERVER['HTTP_HOST'] establecida.

Este tráfico es como 1 golpe por segundo. No sé lo que podría ser, pero para reducir la carga del servidor que estoy haciendo esto en la parte superior de todas las páginas PHP:

if (!isset($_SERVER['HTTP_HOST'])) 
    exit; 

¿sabes lo que podría causar esto? ¿Es seguro salir cuando HTTP_HOST no está configurado?

¿Puede un usuario normal visitar mis páginas sin configuración HTTP_HOST?

  • versión de PHP: 5.2.0-8
  • Apache: 2.2.3
+0

¿Tiene alguna estadística? ¿Qué recursos se solicitan? ¿Qué son las direcciones IP? cualquier otra cosa, ¿un agente de usuario probablemente? –

+0

Como nota al margen: es probable que un usuario "normal" utilice un navegador "normal" y todos hayan usado HTTP/1.1 durante mucho tiempo y esa versión requiera el encabezado 'Host: ...'. Por lo tanto, podría suceder que un usuario normal acceda a su sitio web sin el encabezado 'Host: ...', pero es muy poco probable. –

Respuesta

6

Mmm, podría ser también las "conexiones ficticias apache". Verifique los registros de acceso para la "conexión ficticia interna", estas tesis son utilizadas por el proceso maestro de apache para enviar órdenes a los procesos de su hijo (como suicidarse usted mismo, o tenemos que volver a cargar conf). Y estas conexiones se hacen en HTTP/1.0 sin HOST establecido.

http://wiki.apache.org/httpd/InternalDummyConnection

Tesis # $! "# Sh # f # ck * $! Conexiones están haciendo un montón de errores por ahí, (cosas de caché, sin HTTP/1.1, etc). Solución Un 'simple' no está teniendo su nombre de host basado en Virtuahost sirviendo su aplicación principal como el servidor virtual predeterminado. Mantenga un servidor virtual predeterminado muy simple con la página "funciona", o algo muy simple "si obtiene esta página puede intentar obtener un navegador con HTTP/1.1 soporte en alguna parte ", como una página estática. Entonces todo el tráfico HTTP/1.0 o las personas que acceden a su servidor solo por IP, no estarán en su aplicación real.

Para completar He visto una empresa este año con mala eliminación de proxies el encabezado de host de todo su tráfico HTTP saliente. Pero estos tipos malos son tontos, no creo que haya mucha gente navegando en HTTP/1.0 sin hosts.

+0

exaclty que ... en el registro obtuve una conexión interna ficticia. El problema es para la configuración del dominio Necesito mi principal como el servidor virtual predeterminado. – dynamic

+0

Compruebe en google, hay algunas reglas de mod_rewrite de usefaull para ignorar las conexiones ficticias de apache y lanzarlas antes del manejo real de las solicitudes. – regilero

2

HTTP_HOST es una parte de la solicitud HTTP del cliente y especifica qué nombre de host de la solicitud debe ser dirigida a. Es necesario distinguir el sitio correcto en una configuración de varios sitios.

Si HTTP_HOST no está configurado, el cliente es muy, muy antiguo (HTTP 1.0 no es compatible con HTTP_HOST) o ha realizado una solicitud directamente a la IP de su sitio web.

No puedo ver ningún daño al bloquear esa forma de hacerlo. Sin embargo, si le preocupa el tráfico, sería más prudente solucionarlo en el nivel del servidor web.

+2

Probablemente también sea una buena forma de diferenciarlos. Pero el encabezado 'Host:' era compatible con HTTP 1.0, y muchos clientes 1.0 realmente lo envían. Es solo que se hizo * obligatorio * para conformidad HTTP 1.1, http://stackoverflow.com/questions/4032412/why-do-wget-has-host-header-in-its-http-request – mario

+0

@mario ah, bastante justo, gracias! –

Cuestiones relacionadas