Archivo de la categoría: Apache

Aumentar el número de conexiones simultáneas en Apache

Aumentar el número de conexiones simultaneasHoy en día, la potencia de los equipos es muy superior a la de hace unos años. Esto, también se traduce en una mejora de las características de nuestros servidores. Gracias a estas mejoras de características, podemos modificar algunos parámetros para exprimir el potencial de nuestro servidor VPS. En el artículo de hoy vamos a ver como aumentar el número de conexiones simultaneas de Apache en nuestro VPS. Esto será muy útil en caso de tener un sitio con mucho tráfico. Sigue leyendo

Facebooktwittergoogle_plus

Como bloquear o permitir el acceso mediante IP

Como bloquear o permitir el acceso mediante IPEl tema de la seguridad en nuestro sitio es algo fundamental que debemos tener muy en cuenta. Los accesos no permitidos a ciertas zonas de nuestra web pueden comprometer a todo el sitio web, permitiendo que los atacantes nos roben información, consuman recursos de nuestra máquina o obtengan tomen el control de nuestro sitio. Hoy queremos mostraros unos sencillos scripts, que nos ayudarán a bloquear o permitir el acceso mediante IP a ciertos lugares de nuestro sitio. Sigue leyendo

Facebooktwittergoogle_plus

Activar el server-status de un VPS

Activar el server-status de un VPSPor lo general, nuestras webs poseen sistemas de analítica, bien en el propio servidor o bien proporcionados por terceras empresas, como es el caso de Google Analytics. Mediante estas utilidades, podemos conocer diversos parámetros sobre los visitantes de nuestro sitio. Pero existen muchas herramientas a nivel de servidor, que en un momento dado nos pueden venir de perlas, para comprobar ciertos parámetros. Este es el caso de server-status que nos permite ver en tiempo real el estado y las conexiones de nuestro servidor. Hoy queremos mostraros los sencillos pasos para activar el server-status de un VPS. Sigue leyendo

Facebooktwittergoogle_plus

Cómo redirigir el tráfico HTTP a HTTPS con .htaccess

httpsUna manera rápida y sencilla de redirigir todo el tráfico HTTP a HTTPS cuando hemos instalado un certificado SSL en nuestra web es mediante el archivo .htaccess.

Para ello, basta con añadir la siguiente norma a nuestro archivo:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

Y de esta manera todo el tráfico HTTP será enviado a HTTPS para aprovechar el certificado.

Facebooktwittergoogle_plus

Acelera tus webs con el módulo PageSpeed de Google

pagespeedPageSpeed es un módulo de código abierto para Apache desarrollado por Google que automatiza muchas de las optimizaciones y buenas prácticas que recomienda Google PageSpeed para mejorar la velocidad de nuestras páginas. Funciona aplicando diversos filtros de salida, es decir, haciendo cambios en el contenido antes de que este salga del servidor hacia el cliente.

Hay más de 40 filtros de optimización disponibles, algunos de los cuales son:

  • Optimización de imágenes y compresión
  • Concatenación y minificación de recursos CSS y JavaScript
  • Extensión de caché
  • Carga aplazada de JavaScript y recursos gráficos
  • Y muchos otros más

Instalarlo en uno de nuestros VPS es muy sencillo. Vamos a ver cómo sería una instalación completa en un VPS con CentOS, el sistema operativo que recomendamos para los VPS.

Primero descargamos el paquete para CentOS

wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_x86_64.rpm

Una vez se descarga, ejecutamos la instalación

sudo yum install at  # si no tienes 'at' ya instalado
sudo rpm -U mod-pagespeed-*.rpm

Tan fácil como esto, ya tendríamos el módulo instalado. Reiniciamos Apache con el comando

service httpd restart

Para comprobar que se ha instalado y PageSpeed está activo, abrimos la consola de desarrollador del navegador y en las cabeceras de respuesta del servidor, PageSpeed añade la siguiente:

Captura de pantalla 2015-07-06 a las 16.49.37El archivo de configuración global se encuentra en /etc/httpd/conf.d/pagespeed.conf y se puede configurar individualmente por dominios o carpetas mediante .htaccess.

La configuración que trae por defecto el módulo PageSpeed es bastante efectiva, pero si tenemos casos especiales o se quiere optimizar algunas cuestiones al máximo, deberemos echar mano de la documentación oficial.

Facebooktwittergoogle_plus

Qué son y cómo usar las variables de entorno de Apache desde Plesk

El uso de contraseñas fuertes es sin duda imprescindible para la seguridad, pero a veces se puede convertir en un dolor de cabeza el gestionarlas a la hora del desarrollo de nuestra página web. Pongamos unos ejemplos en los que el buscar un equilibrio entre seguridad y comodidad puede ser complicado:

  • Si quieres que tu programador pueda hacer su trabajo pero no quieres entregarle contraseñas de la base de datos u otros servicios que use tu web.
  • Si quieres tener tu código fuente en un servicio de control de versiones de manera pública, como GitHub, pero que nadie vea tus datos sensibles.
  • Si estás desarrollando en tu máquina local y no quieres tener que cambiar tu archivo de configuración de contraseñas, nombres de usuario, etc, cada vez que subes código al servidor.

Una forma de resolver estos puntos es mediante el uso de variables de entorno de Apache. Haciendo uso de ellas, podemos crear variables a nivel del servidor, a las cuales tenemos acceso desde el código fuente, incrementando así la seguridad de las contraseñas y otros datos sensibles, y haciendo más cómodo el desarrollo.

Vamos a ver un ejemplo en PHP. Imaginemos que tenemos un archivo config.php con el siguiente contenido:

<?php
$password = "clave123";
$usuario = "usuario123";
$base_datos = "nombre_db";

Vamos a sustituir las contraseñas escritas a mano por variables de entorno de Apache. La manera más sencilla de crear estas variables en nuestro VPS es desde Plesk, accediendo a “Configuración del servidor web” para el dominio en que queremos crearlas.

Captura de pantalla 2015-06-05 a las 13.17.29En el campo “Directivas adicionales de Apache” ponemos estas variables:

SetEnv DB_PASS "clave123"
SetEnv DB_USUARIO "usuario123"
SetEnv DB_NOMBRE "nombre_db"

Cuando ya están creadas, acceder a ellas desde nuestro código PHP es muy sencillo. Lo harcemos mediante la función de PHP getenv(). El código del archivo config.php con las claves lo podemos convertir a:

<?php
$password = getenv("DB_PASS");
$usuario = getenv("DB_USUARIO");
$base_datos = getenv("DB_NOMBRE");

Como vemos, ya no hay contraseñas en nuestro código fuente, sólo hay referencias a variables que están configuradas en Apache, de forma que podemos tener nuestro código fuente en repositorios abiertos al público sin que se vean las contraseñas, o permitir que un programador pueda trabajar sin tener que darle acceso total con las claves. Además, si se está desarrollando en local, se pueden configurar también las variables de entorno en el servidor Apache local de forma que no hay que cambiar el código con las contraseñas cada vez que se sube al servidor.

No sólo puede aplicarse a contraseñas de bases de datos, podemos usarlo también por ejemplo para claves API de Twitter, Facebook, y otros servicios, además de otras configuraciones como por ejemplo a qué archivo escribir logs, a qué correo avisar en caso de errores graves y todo tipo de variables que cambian según el entorno en que se ejecuta el código.

Hay que tener presente una cosa muy importante, y es que las variables de entorno aparecen en phpinfo(), por lo que hay que ir con cuidado con esto y asegurarse de no tener ninguna página ejecutándolo, o mejor aún, desactivar la función en la configuración de PHP.

Captura de pantalla 2015-06-05 a las 13.18.08

Facebooktwittergoogle_plus

Instalación y primeros pasos con Node.js

node2La semana pasada vimos qué es Node.js, su funcionamiento y posibles usos que se le pueden dar. Hoy veremos cómo instalarlo en un VPS y dar los primeros pasos con él. En este caso vamos a ver cómo instalarlo en un CentOS, ya que es el sistema operativo más utilizando en nuestros VPS.

Debemos seguir los pasos de instalación que nos indican en la documentación oficial, que son simplemente dos comandos:

curl -sL https://rpm.nodesource.com/setup | bash

Este comando hace unas comprobaciones básicas para ver si podemos instalar Node.js y proporciona instrucciones en caso contrario para poder instalarlo. En un VPS tal cual lo entregamos no debe dar ningún problema.

yum install -y nodejs

Con este comando se instala Node.js y una vez finalice, podemos comprobar que la instalación se ha completado correctamente con:

node -v

Si la instalación es correcta nos mostrará la versión de Node.js que se ha instalado.

Una vez Node.js está instalado, vamos a ver un ejemplo básico de servidor HTTP con un código sacado directamente de la web oficial que guardaremos en nuestro VPS con el nombre “servidor.js”:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hola Mundo\n');
}).listen(1337, '127.0.0.1');
console.log('Servidor en marcha en http://127.0.0.1:1337/');

Accedemos a la carpeta donde hayamos guardado el archivo por SSH y ejecutamos el siguiente código para ponerlo en marcha:

 node servidor.js
Servidor en marcha en http://127.0.0.1:1337/

Y ya tenemos en marcha un servidor web escuchando peticiones en el puerto 1337. Si os fijais en el código, el servidor está en marcha en una IP local del servidor, por lo que no tenemos acceso vía web. Para poder acceder vía web, debemos ir a nuestro panel Plesk y en la suscripción que querramos usar para Node.js debemos indicar que Apache haga de proxy inverso para que dirija el tráfico del puerto 80 al puerto 1337 (el puerto que está escuchando el servidor Node que hemos creado) de forma transparente para los usuarios.

Para ello debemos ir a Configuración del servidor web  de la suscripción y en Directivas adicionales para HTTP ponemos el siguiente código:

<Location /> 
ProxyPass http://localhost:1337/ 
ProxyPassReverse http://localhost:1337/ 
</Location>

Guardamos el cambio y al acceder al dominio de la suscripción deberíamos ver el mensaje “Hola Mundo”, lo cual significa que el servidor está funcionando correctamente.

Como podemos ver es un ejemplo muy básico con el que hemos aprendido a ejecutar un script con Node.js y dirigir el tráfico web a dicho script para que sea este quien lo maneje.

El siguiente paso es estudiar la API y la documentación de Node.js y buscar tutoriales especializados para seguir aprendiendo esta novedosa tecnología.

Facebooktwittergoogle_plus

Cómo activar la compresión GZIP en tu servidor

En el anterior post comentábamos algunas estrategias básicas para aumentar la velocidad de carga de nuestra web y una de las más efectivas es activar la compresión GZIP.

El primer paso que debes realizar en tu servidor es comprobar que el módulo de Apache mod_deflate esté activo. En Evidalia Host está activado por defecto tanto en VPS como en los planes compartidos. Para ello debemos comprobar el archivo de configuración de Apache

vi /etc/httpd/conf/httpd.conf

y buscar la línea

#LoadModule deflate_module modules/mod_deflate.so

Si tiene el símbolo # al principio de la línea no está activado, por lo que quitamos el símbolo y reiniciamos Apache

/etc/init.d/httpd restart

Una vez el módulo está activado, debemos indicarle al servidor que comprima las páginas. Para ello, se debe crear un archivo de configuración mod_deflate.conf dentro de /etc/httpd/conf.d/

vi /etc/httpd/conf.d/mod_deflate.conf

Dentro añadimos el siguiente código

<Location />
<IfModule mod_deflate.c>
# se comprueba que el módulo está activo

# activamos la compresión
SetOutputFilter DEFLATE

# hacemos que no comprima imágenes
SetEnvIfNoCase Request_URI \.(?:gif|jpeg|jpg|png)$ no-gzip dont-vary

# nos aseguramos de que los proxies no envien contenido incorrecto
Header append Vary User-Agent env=!dont-vary

<IfModule mod_headers.c>
# hacemos que controle bien peticiones que vienen de detras de un proxy
Header append Vary User-Agent env=!dont-vary
</IfModule>
</IfModule>
</Location>

Guardamos y reiniciamos Apache de nuevo

/etc/init.d/httpd restart

Y comprobamos que la compresión está activa usando http://checkgzipcompression.com

De esta manera habremos activado la compresión GZIP en nuestro servidor. Alternativamente, si no queremos activarla en todo el servidor, no crearíamos el archivo de configuración mod_deflate.conf e indicaríamos vía .htaccess qué peticiones deseamos que el servidor comprima.

Para configuraciones más avanzadas, recomendamos comprobar la documentación oficial de mod_deflate en http://httpd.apache.org/docs/current/mod/mod_deflate.html

Facebooktwittergoogle_plus

Cómo mejorar la velocidad de carga de tu página web

Una de las métricas que utiliza Google para analizar tu página web con su algoritmo de ranking es la velocidad de carga de esta. Si bien es cierto que no contribuye significativamente, sí que puede marcar una diferencia a la hora de mejorar nuestra posición en el buscador una vez tenemos los puntos más básicos para mejorar el SEO cubiertos.

Aparte de la importancia que la velocidad de carga tiene a la hora de posicionarse en Google, tenemos que tener en cuenta que cada segundo que restemos de nuestro tiempo de carga hará que nuestros visitantes continuen navegando, que confíen en nuestro sitio y que hablen a otros de nuestra web. En el caso de tiendas online por ejemplo, unos pocos segundos pueden marcar una enorme diferencia.

Pasemos a ver los pasos más importantes para mejorar la velocidad de carga:

  • Habilitar la compresión gzip: hoy en dia cualquier navegador moderno soporta la compresión gzip. Esta técnica consiste en que el servidor comprime la página a la hora de enviarla al usuario y el navegador automáticamente la descomprime, reduciendo el tamaño de la página en una media de un 70%. Para activar la compresión gzip, debemos habilitar mod_deflate en Apache
  • Aprovecha la caché del navegador: cuando visitas una página web por primera vez, el navegador descarga todos los recursos que esta utiliza (imágenes, CSS, javascript). Lo más normal es que estos recursos no cambien y sirvan para la siguiente visita, por lo que cada recurso debe indicar una política de cacheado mediante la cabecera Cache-Control que indique para cuánto tiempo es válido cada recurso. Además de los recursos, se pueden cachear páginas completas de forma que el servidor no tiene que generar contenido dinámico cada vez que un usuario visita una página. Estas técnicas pueden ahorrar muchísimo tiempo de proceso en el servidor, lo cual se traduce en mayor velocidad de carga y es muy fácilmente implementable en la mayoría de CMS mediante plugins como por ejemplo WP Super Cache para WordPress.
  • Minifica tus recursos: consiste en eliminar contenido innecesario o redundante en nuestras hojas de estilo o scripts javascript reduciendo el tamaño de estos recursos. Muy sencillo de implementar con herramientas como http://jscompress.com/ y http://cssminifier.com/
  • Optimiza tus imágenes: hay muchas maneras de optimizar el uso de las imágenes en nuestra página web, desde simplemente comprimir las imágenes a sustituirlas por imágenes vectorizadas. Google tiene una guía muy completa al respecto.
  • Usa CDNs para cargar tus recursos: un CDN o Content Delivery Network, es una red de servidores distribuidos que sirven contenido web basándose en la situación geográfica del usuario, es decir, si te visita un usuario en París, pero tienes tu página hospedada en Evidalia cuyos servidores están en España, usando un CDN para cargar tus recursos (CSS, javascript) estos se cargarán del servidor que el CDN tiene en París, por lo que tu página web tendrá menos latencia para el usuario. Utilizarlo es muy sencillo, los scripts más utilizados como jQuery o Bootstrap se pueden obtener muy fácilmente desde un CDN y es tan fácil como sustituir:
    <script src="/scripts/jquery-1.11.2.min.js"></script>
    <link href="/css/bootstrap.min.css" rel="stylesheet">

    por:

     <script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
     <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">

Google nos proporciona una herramienta llamada PageSpeed Insights que podemos utilizar para comprobar cada uno de los puntos más básicos, además de otros más avanzados, que influyen en la velocidad de carga de nuestra web y que Google tiene en cuenta y nos muestra consejos sobre qué puntos debemos mejorar en nuestra página.

Facebooktwittergoogle_plus

Forzar a usar una conexión segura

Forzar a usar una conexión seguraHace tiempo os comentamos los caracteres extraños que aparecían en la url de Google, y esto era simplemente porque el buscador forzaba a sus usuarios a utilizar una conexión segura o conexión SSL.

Si por la circunstancia que sea, necesitas que todas las visitas a tu sitio utilicen una conexión segura, puedes forzar su uso mediante el uso del fichero .htaccess , aunque lo primero que haremos será comprobar que podemos disponer del módulo mod_rewrite, ya que éste es necesario. Sigue leyendo

Facebooktwittergoogle_plus