Configuración de un subdominio

Un buen artículo que explica cómo configurar un subdominio. Empieza indicando cómo se redirige a un subdominio: las configuración de un subdominio está ligada a la del dominio, la petición llega primero al subdominio y luego esta redirigirá al servidor web correspondiente del subdominio.

La primera opción es cuando el subdominio apunta al mismo servidor web, para ello es necesario configurar el servidor DNS, indicando el alias mediante los CNAMES. Si se encuentra en distinta IP que el dominio es necesario indicarlo mediante A. Y si deseamos gestionar el correo por otro servidor de correo deberemos indicarlo mediante MX. [Gracias Sergio por la corrección]

www IN CNAME dominio.com.
subdominio1 IN CNAME dominio.com.
subdominio2 IN CNAME dominio.com.
subdominio1 IN A 123.45.67.89.
subdominio2 IN A 123.45.67.90.
subdominio1 IN MX 10 subdominio1.dominio.com.
subdominio2 IN MX 10 subdominio2.dominio.com.

Y ya por último la configuración de Apache:

Listen 80
NameVirtualHost *
<VirtualHost *>
ServerName www.dominio.com
DocumentRoot /home/httpd/htdocs/
</VirtualHost>
<VirtualHost *>
ServerName subdominio.dominio.com
DocumentRoot /home/httpd/htdocs/subdominio/
</VirtualHost>

Subdomain Configuration

Ejemplos de htaccess para Apache

Impresionante lista de trucos y ejemplos de código para incluir en nuestro .htaccess o httpd.conf, que nos puede a llegar a ser muy útil.

Ultimate htaccess Article

Cómo instalar Apache en Windows Vista

Aunque no soy usuario de Vista, si que he visto que algunas personas se quejan de tener problemas para instalar Apache en Windows Vista.

Vamos a decir cómo se haría paso a paso (aunque algunos pasos sean demasiado obvios):

  • Ir a Start
  • All Programs
  • Accessories, después hacer click con el botón derecho en Command Prompt y selecciona Run as administrator. Esto abrirá una ventana de comandos con derechos de administrador.
  • Dirígete al directorio donde tengas guardado el archivo de instalación apache*.msi y ejecuta “msiexec /i apache*.msi”, donde apache*.msi es el nombre del archivo completo.
  • Pulsa enter y el resto irá a la perfección.

Installing Apache on Vista

Vía / Planet PHP

Mod_security: ‘enjaula’ tu Apache

Algo que nos debería preocupar bastante es la seguridad de nuestro servidor web. “Enjaular” se refiere a meter a Apache en un entorno propio para que cuando suframos un ataque solo a ese entorno y no a nuestro sistema entero.
Para ello, se puede hacer mediante mod_security y la gente de Apache-ES nos explica muy bien cómo instalarlo para Linux y cómo hacerlo para que funcione bajo Windows ya que en Windows mod_security no funciona correctamente.
Apache mod-security (PDF)
Vía / Apache-ES

20 cosas para volver segura tu configuración de Apache

Os presento una lista que he encontrado de 20 cosas que se pueden hacer para volver más segura tu configuración de Apache:

  • Antes de nada, asegurate de que tienes instalados todos los parches de seguridad.
  • Oculta la versión de Apache y otra información sensible.
  • Asegúrate de que Apache se ejecuta con su usuario propio y su grupo de usuarios.
  • Los ficheros fuera del web root no deben ser accesibles.
  • Desactiva el listado de directorios.
  • Desactiva los server side includes.
  • Desactiva la ejecución de CGIs.
  • No permitir que Apache siga los symbolic links.
  • No permitas opciones de una única vez.
  • Desactiva el soporte a .htaccess.
  • Usa mod_security.
  • Desactiva módulos innecesarios.
  • Asegurate que solo el root tiene acceso al fichero de configuración de Apache y a los binarios.
  • Disminuye el valor del timeout.
  • Limita el tamaño de las requests.
  • Limita el tamaño del cuerpo de un XML.
  • Limita la concurrencia.
  • Restringe el acceso mediante IP.
  • Ajusta las opciones de KeepAlive.
  • Ejecuta Apache en un entorno Chroot.

20 ways to Secure your Apache Configuration

Balanceo de carga con Apache

No sé si se os dará el caso de tener una aplicación en la que se consumen muchos recursos. En estos casos, lo que se suele hacer, cuando la aplicación no se puede optimizar más (o no se sabe), es que se balancee la carga, unas veces se ejecuta en un servidor, otras en otro. Teniendo en cuenta que la base de datos y el servidor de ficheros deben estar compartidos por todos los servidores.
Si necesitas hacer balanceo de carga con Apache, necesitarás usar mod_jk y GlassFish, a parte será necesario tener instalado: Apache 2.0.x, Apache Tomcat Connectors link, Apache Tomcat 5.5.16, Apache Commons Logging 1.0.4, Apache Commons Modeler 1.1 y por supuesto las dos últimas instalaciones de GlassFish V1/V2.
Loadbalancing with mod_jk and GlassFish
Vía / dzone

Agiliza tus páginas mediante htaccess caching

Un artículo extenso y completo que nos muestra como usar dos módulos de Apache para lograr la caché en nuestro servidor. Para ello se necesitan los módulos mod_headers, el cual modifica las cabeceras de las peticiones y respuestas HTTP, y mod_expires

, el cual permite generar las cabeceras HTTP para expiración y control de caché según criterios fijados por el usuario.

Como ejemplos sencillos incluiremos el ejemplo para uso de mod_headers, poniendo un mes de tiempo de caché para imágenes:

<FilesMatch "\.(flv|gif|jpg|jpeg|png|ico|swf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>

Para el uso de mod_expires tendremos que añadir lo siguiente:

ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpg A2592000

El artículo es mucho más completo que lo que hemos mencionado, sobre todo la discusión que existe referente al uso de expires, por lo que la lectura es bastante recomendable para quien quiera profundizar en el tema.

Speed Up Sites with htaccess Caching

Vía / del.icio.us

Limita el tamaño de ficheros a subir mediante Apache

El otro día una amiga me escribía bastante agobiada preguntando cómo se podía saber mediante Javascript el tamaño de un fichero que se quería subir, porque si superaba cierto tamaño, no se debía permitir que se subiera (antes de que se intente mandar). Mi respuesta fue un “no se puede hacer desde el cliente” (espero no haberme equivocado).

El problema que tenía es que le obligaban a que fuera en el navegador, supongo que o el cliente (cabezón) o el analista/jefe (más cabezón aún). La solución, que creo que no aceptaban era controlarlo mediante Apache: se añade en el fichero .htaccess la siguiente directiva y ya no hay problemas:

LimitRequestBody tamaño

Siendo tamaño el número de bytes que ponemos como límite para subir ficheros.

A parte de este ejemplo, mi pobre amiga siempre anda enmarronada con peticiones increibles. Por ello, dos consejos:

  • No dejéis que el cliente imponga lo que le venga en gana, hay cosas que no se pueden/deben hacer y por mucho que se empeñe, seguirán sin poderse/deberse hacer. Entre ellas, siempre se comprueban las cosas en el servidor, nunca únicamente en el cliente, sobre todo por temas de seguridad.
  • El elemento input file es tal cual es, no se le puede cambiar el texto del botón, ni aplicarle filtro, ni que te vaya a la carpeta que quieran, ni cambiar el diseño de la ventana, ni modificar mediante Javascript el fichero que se quiere seleccionar. Aunque parezca mentira siempre acaban pidiéndonos alguna de estas cosas.

Pido disculpas si esta entrada no es la típica, pero es que las tonterías del cliente acaban sacándote de quicio.

| |

Laboratorio: multilenguaje mediante Apache

Leyendo un comentario en una entrada de Minid.net, en el que preguntaba cómo redirigir a una url específica según el idioma del navegador, se nos ha ocurrido explicarlo según lo haríamos nosotros.

Se trata de que la url se redirija a otro directorio según el idioma que nos viene por la cabecera HTTP, por ejemplo: si accedemos a www.dominio.com y nuestro lenguaje es el español, que nos redirija a www.dominio.com/es, y si el idioma es el inglés que acceda a www.dominio.com/en. En nuestro caso, si el idioma no está en la lista de idiomas disponibles accederemos a un idioma por defecto (en).

Read More “Laboratorio: multilenguaje mediante Apache”

|

Simular dominio en localhost con Apache

Una cosa que siempre me ocurre cuando estoy trabajando en mis propios proyectos, es que me creo una carpeta para cada uno de los proyectos dentro del raíz (root) y no puedo usar paths absolutos ya que en el servidor real no usaré ese directorio.

Por ejemplo, estoy creando un nuevo proyecto llamado proyecto1 y para trabajar en local tengo la ruta siguiente: http://localhost:8080/proyecto1, pero cuando lo suba al servidor, será http://proyecto1.com. Voy a tener problemas si quiero usar los paths sean absolutos (“/imagenes/fondo.png”), porque en local debería tener antes el directorio del proyecto (“/proyecto1/imagenes/fondo.png”). Lógicamente, no puedo estar trabajando con paths relativos y luego pasarlos a absolutos cuando lo suba al servidor, puedo liar una buena.

¿Qué solución me queda?, pues una de ellas es la que uso desde hace tiempo, quizás no la más limpia, pero si es bastante sencilla.

Primero tengo que acceder al fichero hosts, que suele encontrarse en la ruta C:\windows\system32\drivers\etc, y añadir la siguiente línea:

127.0.0.1 proyecto1

Con esto lo que conseguimos es que se reconozca el dominio proyecto1 como nuestra propia máquina (127.0.0.1).

Y lo siguiente que tenemos que hacer es modificar el fichero de configuración de Apache (httpd.conf) e incluir el nuevo host.

NameVirtualHost proyecto1:8080
<VirtualHost proyecto1:8080>
DocumentRoot "C:/proyectos/proyecto1"
ServerName proyecto1
</VirtualHost>
<Directory "C:/proyectos/proyecto1">
Allow from all
</Directory>