# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

Activar compresión HTTP en IIS 6.0

Activar la compresión HTTP en IIS 6.0 permite optimizar y reducir el uso de ancho de banda del servidor y acelerar la carga de los sitios web. Es posible comprimir tanto contenido estático como dinámico.

Lo que sucederá al activar la compresión, es que las páginas cacheadas y comprimidas se almacenarán en un directorio temporal y se servirán desde ahí. Para activarlo (tenemos que ser administrador) hacemos lo siguiente:

1) Accedemos a la administración de IIS (IIS Manager)
2) Desplegamos el servidor (local computer), y pinchamos con el botón derecho en “Web Sites”, una vez dentro, accedemos a la pestaña “Services”:

Compresión HTTP IIS

En la imagen se puede ver la posibilidad de activar la compresión para ficheros estáticos, ficheros de aplicación y especificar el directorio temporal así como su tamaño máximo.

Guardamos los cambios y la compresión quedará activada, podremos ver como el directorio temporal comienza a almacenar ficheros.

Redirección 301 con IIS

Vamos a ver como realizar una redirección tipo 301 (Página movida permanentemente) para un sitio web alojado en un servidor con IIS (Internet Information Services) corriendo.

Necesitamos acceso por Terminal Service al servidor en el que tenemos el sitio web alojado. Una vez dentro accederemos a “Internet Services Manager” para modificar el website:

Start -> Programs -> Administrative Tools -> Internet Services Manager
Inicio -> Programas -> Herramientas administrativas -> Administrador de Internet Information Services (IIS)

Una vez dentro accedemos al servidor pinchando en él (normalmente local computer) y después pinchamos en websites. Ahora tendremos todos los websites que hay configurados en ese servidor. Pinchamos con botón derecho sobre el que nos interese y pinchamos en “Propiedades“.

Ahora, en la sección “Home Directory“, tenemos que seleccionar “A redirection to a URL” o “Redirección a una URL”. En el cuadro de texto escribimos la URL de destino para la redirección 301 y nos aseguramos de pinchar en “A permanent Redirection for this resource“. Esta última opción es la que configurará el 301.

Redirección 301 IIS

Ahora solamente queda guardar y reiniciar el website para que los cambios refresquen. Esta sería una redirección básica 301. IIS permite también redirigir páginas individuales del website o pasar variables como haríamos con mod_rewrite y apache. Esto lo veremos en otra entrada.

IIS: Importar o exportar un Web Site

En IIS (Internet Information Services) tenemos la opción de importar y exportar Web Sites, o lo que es lo mismo, sus configuraciones. Esto es muy útil para migraciones entre distintas máquinas y evitar tener que configurar a mano de nuevo cada uno de los Web Sites que compongan nuestro servidor Web.

El proceso es muy sencillo, abrimos el Internet Information Services (IIS) Manager, pinchamos en la sección de Web Sites y clickamos con el botón derecho en el Web Site que queramos exportar. All Tasks –> Save Configuration To a File…

IIS Exportar Web site

Y eso es todo, para hacer la tarea inversa simplemente accederemos también al IIS Manager, pincharemos en Web Sites con el botón derecho, y clickaremos en New –> Web Site (From File) para importarlo en nuestro servidor.

Comprobar funcionamiento servidor web vía TELNET

Seguimos con las comprobaciones a través de TELNET de los diferentes servicios que nos encontramos normalmente en un servidor. Ayer vimos como hacer pruebas contra un servidor SMTP, y hoy vamos a hacerlo contra un servidor web, concretamente contra un servidor web bajo Apache y otro bajo IIS, aunque el modo de operar es el mismo y muy sencillo.

Simplemente conectamos al servidor/host vía TELNET a través del puerto 80:

$ telnet www.apache.org 80
Trying 192.87.106.226...
Connected to www.apache.org.
Escape character is '^]'.

Ya estamos dentro, lo que es una buena señal, ahora vamos a lanzar una petición HTTP (HTTP/1.0, HTTP/1.1) en la que solicitamos solamente las cabeceras (HEAD) de la misma. Si quisieramos solicitar el documento completo en vez de HEAD utilizaríamos GET.

Nota: Hay que presionar ENTER dos veces tras escribir la petición HEAD/GET:

Ejemplo de un servidor Apache con respuesta correcta:

$ telnet www.apache.org 80
Trying 192.87.106.226...
Connected to www.apache.org.
Escape character is '^]'.
HEAD / HTTP/1.0

HTTP/1.1 200 OK
Date: Fri, 02 Oct 2009 09:26:01 GMT
Server: Apache/2.2.12 (Unix) mod_fcgid/2.3.2-dev
Last-Modified: Mon, 03 Aug 2009 13:41:54 GMT
ETag: "700a74-4e05-4703ceed30c80"
Accept-Ranges: bytes
Content-Length: 19973
Cache-Control: max-age=86400
Expires: Sat, 03 Oct 2009 09:26:01 GMT
Vary: Accept-Encoding
Connection: close
Content-Type: text/html

Ejemplo de un servidor IIS con respuesta correcta:

$ telnet www.microsoft.com 80
Trying 207.46.192.254...
Connected to lb1.www.ms.akadns.net.
Escape character is '^]'.
HEAD / HTTP/1.0

HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Length: 1020
Content-Type: text/html
Last-Modified: Mon, 16 Mar 2009 20:35:26 GMT
Accept-Ranges: bytes
ETag: "67991fbd76a6c91:0"
Server: Microsoft-IIS/7.5
P3P: CP="ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI"
X-Powered-By: ASP.NET
Date: Fri, 02 Oct 2009 09:27:36 GMT
Connection: keep-alive

IIS: Imposible ejecutar perl o php con Application Pool Isolation

Es posible que tengáis un servidor Windows 2003 server con IIS funcionando correctamente, los websites ejecutan sin problemas php o perl, pero en el momento que aislamos un website (Application Pool Isolation) tanto PERL como PHP dejan de funcionar, dando normalmente el siguiente error:

HTTP Error 403 – Forbidden: Access is denied

Este problema es debido a que cada identidad de application pool (usuario configurado en la aplicación para ejecución de scripts, php, etc) debe ser miembro del grupo IIS_WPG de modo que nos aseguremos que tenga permisos para ejecutar php o perl.

Realizaremos las siguientes modificaciones en las políticas de seguridad para solventar el problema, iremos a:

START > Administrative Tools > Local Security Policy

Seleccionamost Local Policies > User Rights Assignment

En el listado que aparezca, buscamos Adjust memory quotas for a process y pinchamos en las propiedades. Posteriormente Add User or Group > Object Types marcando la casilla de  Groups y OK the Object Types dialogue. Ahora en la ventana Enter the object names to select introduce IIS_WPG y pincha OK.

El mismo proceso debe ser ejecutado en Replace a process level token. Reiniciaremos la máquina y ya debería funcionar correctamente. Todos los miembros de IIS_WPG pueden ejecutar aplicaciones CGI sin problemas.

Vía | Asimo Support

ISAPI Rewrite: Alternativa a Mod Rewrite en IIS

ISAPI_Rewrite es un manipulador de URL basado en expresiones regulares para IIS (Microsoft Internet Information Server), es el equivalente a mod_rewrite para Apache. ISAPI_Rewrite actua prácticamente igual que mod_rewrite en apache, pero siendo designado exclusiva y específicamente para IIS. ISAPI_Rewrite es un filtro0 ISAPI escrito en C/C++, y es extremadamente rápido.

Las funcionalidades son las mismas que mod_rewrite, como por ejemplo la manipulación de URLs para que sean más amigables y mejoren el posicionamiento web de los sitios, siendo más amigables con los buscadores. Más información en la web oficial www.isapirewrite.com

Os dejo unos ejemplos sacados de la documentación de ISAPI_Rewrite para que veáis las similitudes con Mod_Rewrite:

[ISAPI_Rewrite]

#Fix missing slash char on folders
RewriteCond  Host:  (.*)
RewriteRule  ([^.?]+[^.?/]) http\://$1$2/ [I,R]

#Emulate site1
RewriteCond  Host:  (?:www\.)?site1\.com
RewriteRule  (.*)   /site1$1 [I,L]

#Emulate site2
RewriteCond  Host:  (?:www\.)?site2\.com
RewriteRule  (.*)   /site2$1 [I,L]
[ISAPI_Rewrite]

#Fix missing slash char on folders
RewriteCond  Host:  (.*)
RewriteRule  ([^.?]+[^.?/]) http\://$1$2/ [I,R]

RewriteCond  Host:  (www\.)?(.+)
RewriteRule  (.*)   /$2$3

Helm: Unknown error while xxxxx: Permission denied{0}

2008-11-19 13:41:43 CWebsite.GetSiteConfiguration 000000000070: Unknown error while getting website configuration: Permission denied{0}
2008-11-19 13:44:28 Website.IWeb_RemoveWebSite 000000000070: Unknown error while removing site: Permission denied{0}
2008-11-19 13:44:28 CWebsite.RemoveWebsiteEx 000000000070: Unknown error while removing site: Permission denied{0}
2008-11-19 13:44:28 CDomain.DeleteDomainEx 000000000070: Unknown error while removing site: Permission denied{0}

La causa más probable de todos estos errores a la hora de eliminar dominios y similar en Helm, suele ser que el fichero IIS.xml está corrupto. Helm revisa en este fichero a la hora de editar/añadir servicios web en los dominios.

Para solventar el problema, hay que eliminar el fichero IIS.xml ubicado enC:\\Helm.Config, en caso de no poder borrarlo y estar el fichero bloqueado, hay que reiniciar el servidor y después borrarlo.

Una vez rebotado y borrado el fichero, ya podemos eliminar y editar dominios sin problemas, ya que forzamos a Helm a que regenere de nuevo el mismo y lea todas las configuraciones.

IIS + PHP: “No input file specified” en errores 404

Si bajo un servidor web IIS con PHP, os encontráis con la situación de que las páginas de error 404 funcionan correctamente para archivos .html o .asp, pero no para los .php el problema es el que explico a continuación.

En lugar de aparecer la página de error aparecerá:

“No input file specified”

Bien, esto es debido a que por defecto, en la configuración del website en el que tenemos el problema, no está marcada la opción “check If file exists.”

Para marcarla, acceder al website en cuestión -> Properties -> Home Directory -> Configuration y en la configuración de la extensión .php:

Reiniciamos el website y solucionado.