Acelere el rendimiento de Nginx con Ngx_Pagespeed en CentOS 7
Nginx [motor x] es un potente servidor web y software de proxy inverso, multiplataforma, gratuito y de código abierto escrito en C. También es un servidor proxy IMAP/POP3 y TCP/UDP estándar. y se puede utilizar como equilibrador de carga.
Nginx es un servidor HTTP muy conocido (comparable al servidor HTTP Apache) que alimenta numerosos sitios en la web; Es popular por su alto rendimiento y estabilidad.
Hay varios factores importantes a considerar cuando desea mejorar la experiencia del usuario en su sitio, incluida la velocidad del sitio y la velocidad de la página (también conocida como tiempo de carga de la página). Si su sitio funciona con Nginx, puede utilizar ngx_pagespeed para este propósito.
Lectura sugerida: Instale Mod_Pagespeed para mejorar el rendimiento del servidor Apache
Ngx_pagespeed es un módulo Nginx gratuito y de código abierto que se utiliza para mejorar la velocidad de los sitios y reducir el tiempo de carga de la página. Reduce significativamente el tiempo que tardan los usuarios en ver e interactuar con el contenido de su sitio.
Características de Ngx_pagespeed:
- Soporte para HTTPS y control de URL.
- Optimización de imágenes: eliminación de metadatos, cambio de tamaño dinámico, recompresión.
- Minimización, concatenación, inserción y delineado de CSS y JavaScript.
- Incorporación de pequeños recursos.
- Aplazar la carga de imágenes y JavaScript.
- Reescritura de HTML.
- Extensión de la vida útil de la caché.
- Permite configurar para múltiples servidores y muchos otros.
En este tutorial, mostraremos cómo instalar Nginx con ngx_pagespeed y probaremos toda la instalación en RHEL/CentOS 7.
Atención: los usuarios de Debian y Ubuntu pueden seguir esta guía para instalar Ngx_Pagespeed para mejorar el rendimiento de Nginx.
Paso 1: instale Nginx desde la fuente
1. Para instalar Nginx con ngx_pagespeed es necesario compilarlo desde el código fuente. Primero instale todos los paquetes necesarios para compilar Nginx desde una fuente como esta.
yum install wget gcc cmake unzip gcc-c++ pcre-devel zlib-devel
OR
yum group install "Development Tools"
2. A continuación, obtenga los archivos fuente de la última versión de Nginx (1.13.2 en el momento de escribir este artículo) usando el comando wget y extraiga la bola tar descargada como se muestra a continuación. .
mkdir ~/downloads
cd ~/downloads
wget -c https://nginx.org/download/nginx-1.13.2.tar.gz
tar -xzvf nginx-1.13.2.tar.gz
3. A continuación, descargue los archivos fuente ngx_pagespeed y descomprima los archivos comprimidos.
wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
unzip v1.12.34.2-stable.zip
4. Ahora vaya al directorio ngx_pagespeed descomprimido y obtenga las bibliotecas de optimización de PageSpeed para compilar Nginx de la siguiente manera.
cd ngx_pagespeed-1.12.34.2-stable/
wget -c https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
tar -xvzf 1.12.34.2-x64.tar.gz
Paso 2: configurar y compilar Nginx con Ngx_Pagespeed
5. Ahora vaya al directorio nginx-1.13.2 y configure el código fuente de Nginx ejecutando los siguientes comandos.
cd ~/downloads/nginx-1.13.2
./configure --add-module=$HOME/downloads/ngx_pagespeed-1.12.34.2-stable/ --user=nobody --group=nobody --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid ${PS_NGX_EXTRA_FLAGS}
6. A continuación, compile e instale Nginx de la siguiente manera.
make
make install
7. Cuando se complete el proceso de instalación, cree todos los enlaces simbólicos necesarios para Nginx.
ln -s /usr/local/nginx/conf/ /etc/nginx/
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
Paso 3: Crear un archivo de unidad Nginx para SystemD
8. A continuación, dado que systemd es el sistema init en CentOS 7, debe crear manualmente la unidad Nginx. archivo para ello.
Primero, cree el archivo /lib/systemd/system/nginx.service, luego tome el archivo de servicio systemd de NGINX y pegue la configuración del archivo de la unidad en el siguiente archivo.
vi /lib/systemd/system/nginx.service
Tome nota de la ubicación del PIDFile y del binario NGINX que configuró al configurar y compilar Nginx; los configurará en las variables apropiadas en el archivo de unidad como se muestra a continuación. :
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Guarde el archivo y ciérrelo.
9. En este punto, inicie el servicio nginx mientras tanto y habilítelo para que se inicie en el inicio del sistema ejecutando los siguientes comandos.
systemctl start nginx
systemctl enable nginx
systemctl status nginx
Paso 4: Configurar Nginx con el módulo Pagespeed
10. Con Nginx instalado, a continuación, debe habilitar el módulo Ngx_pagespeed. Comience creando un directorio donde el módulo almacenará en caché los archivos de su sitio web y establezca los permisos apropiados en este directorio con los siguientes comandos.
mkdir -p /var/ngx_pagespeed_cache
chown -R nobody:nobody /var/ngx_pagespeed_cache
11. Ahora es el momento de habilitar el módulo Ngx_pagespeed, abra el archivo de configuración de Nginx y agregue las líneas siguientes.
Importante: Si ha configurado algún host virtual nginx en el servidor, agregue las directivas de velocidad de página anteriores a cada bloque del servidor para habilitar Ngx_pagespeed en cada sitio.
vi /etc/nginx/nginx.conf
Agregue las siguientes líneas de configuración Ngx_pagespeed dentro del bloque del servidor.
Pagespeed main settings
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
Ensure requests for pagespeed optimized resources go to the pagespeed
handler and no extraneous headers get set.
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }
El siguiente es un ejemplo práctico del archivo de configuración de Nginx con Ngx_pagespeed habilitado en el host virtual predeterminado.
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
# Pagespeed main settings
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
# Ensure requests for pagespeed optimized resources go to the pagespeed
# handler and no extraneous headers get set.
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
12. Luego, asegúrese de que el archivo de configuración de Nginx esté libre de errores ejecutando el siguiente comando; verá el resultado a continuación si todo está bien.
nginx -t
13. Finalmente, reinicie el servidor Nginx para que los cambios surtan efecto.
systemctl restart nginx
Paso 5: Probar Nginx con Ngx_pagespeed
14. Para saber si Ngx_pagespeed ahora funciona junto con Nginx, debe aparecer en el encabezado X-Page-Speed.
curl -I -p http://localhost
En caso de que no haya podido ver el encabezado anterior, regrese al paso 11 y siga cuidadosamente las instrucciones para habilitar Ngx-pagespeed con los pasos siguientes.
Repositorio Github de Ngx-pagespeed: https://github.com/pagespeed/ngx_pagespeed
¡Eso es todo! En este tutorial, mostramos cómo instalar y configurar Nginx con el módulo Ngx_pagespeed para optimizar y mejorar el rendimiento del sitio y reducir el tiempo de carga de la página.
Para proteger el servidor web Nginx, lea este artículo: La guía definitiva para proteger, reforzar y mejorar el rendimiento del servidor web Nginx.
Como siempre, no dude en hacernos saber cualquier consulta o idea sobre este tutorial.