Nginx es un servidor web gratuito y de código abierto que alimenta muchos sitios en Internet. Se puede utilizar como proxy inverso y equilibrador de carga. Es conocido por su alto rendimiento y estabilidad.
ngx_pagespeed es un módulo Nginx de código abierto que se puede utilizar para optimizar el rendimiento de su sitio web. Está desarrollado por Google y reduce el tiempo de carga de la página y acelera el tiempo de respuesta del sitio web.
En este tutorial, le mostraremos cómo compilar ngx_pagespeed como un módulo dinámico con Nginx en el servidor Ubuntu 20.04.
Requisitos
- Un servidor con Ubuntu 20.04.
- Un nombre de dominio válido apuntado con la IP de su servidor. En este tutorial, usaremos el dominio example.com.
- Se configura una contraseña de root en el servidor.
Cómo empezar
Antes de comenzar, deberá actualizar los paquetes de su sistema a la última versión. Puede actualizarlos ejecutando el siguiente comando:
apt-get update -y
Una vez que todos los paquetes estén instalados, deberá instalar algunas dependencias requeridas en su sistema. Puede instalarlos todos con el siguiente comando:
apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 git libpcre3-dev unzip -y
Una vez que todos los paquetes estén instalados, puede continuar con el siguiente paso.
Instalar servidor web Nginx
A continuación, deberá instalar el servidor web Nginx en su sistema. Puede instalarlo con el siguiente comando:
apt-get install nginx -y
Una vez completada la instalación, puede verificar la versión instalada de Nginx con el siguiente comando:
nginx -v
Debería ver la versión de Nginx en el siguiente resultado:
nginx version: nginx/1.18.0 (Ubuntu)
Una vez que haya terminado, puede continuar con el siguiente paso.
Descargar y compilar ngx_pagespeed
Antes de descargar y compilar ngx_pagespeed. Deberá descargar la fuente de Nginx en su sistema. Puede descargar el paquete fuente de Nginx con el siguiente comando:
Nota:Asegúrese de que la versión de Nginx descargada coincida con la versión de Nginx instalada. Aquí, la versión instalada de Nginx es 1.18.0. Por lo tanto, deberá descargar la fuente de Nginx de la versión 1.18.0 del sitio web de Nginx.
wget http://nginx.org/download/nginx-1.18.0.tar.gz
Una vez que se complete la descarga, extraiga el archivo descargado con el siguiente comando:
tar -xvzf nginx-1.18.0.tar.gz
A continuación, descargue la fuente ngx_pagespeed del repositorio de Git con el siguiente comando:
git clone https://github.com/apache/incubator-pagespeed-ngx.git
Una vez que se complete la descarga, cambie el directorio al directorio descargado y verifique la versión estable con el siguiente comando:
cd incubator-pagespeed-ngx
git checkout latest-stable
Deberías obtener el siguiente resultado:
Note: switching to 'latest-stable'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -c with the switch command. Example: git switch -cOr undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false HEAD is now at 11ba8ea54 Update PSOL_BINARY_URL
De la salida anterior, seleccione el archivo "PSOL_BINARY_URL" para ver la URL de descarga de PSOL:
cat PSOL_BINARY_URL
Deberías obtener el siguiente resultado:
https://dl.google.com/dl/page-speed/psol/1.13.35.2-$BIT_SIZE_NAME.tar.gz
Ahora, ejecute el siguiente comando para descargar PSOL usando la URL anterior:
wget https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz
A continuación, extraiga el archivo descargado con el siguiente comando:
tar -xvzf 1.13.35.2-x64.tar.gz
Luego, cambie el directorio a la fuente de Nginx e instale todas las dependencias requeridas con el siguiente comando:
cd /root/nginx-1.18.0
apt-get build-dep nginx
apt-get install uuid-dev
Luego, compile el módulo ngx_pagespeed con el siguiente comando:
./configure --with-compat --add-dynamic-module=/root/incubator-pagespeed-ngx
Deberías obtener el siguiente resultado:
Configuration summary + using system PCRE library + OpenSSL library is not used + using system zlib library nginx path prefix: "/usr/local/nginx" nginx binary file: "/usr/local/nginx/sbin/nginx" nginx modules path: "/usr/local/nginx/modules" nginx configuration prefix: "/usr/local/nginx/conf" nginx configuration file: "/usr/local/nginx/conf/nginx.conf" nginx pid file: "/usr/local/nginx/logs/nginx.pid" nginx error log file: "/usr/local/nginx/logs/error.log" nginx http access log file: "/usr/local/nginx/logs/access.log" nginx http client request body temporary files: "client_body_temp" nginx http proxy temporary files: "proxy_temp" nginx http fastcgi temporary files: "fastcgi_temp" nginx http uwsgi temporary files: "uwsgi_temp" nginx http scgi temporary files: "scgi_temp"
A continuación, ejecute el siguiente comando para crear el módulo Pagespeed:
make modules
A continuación, copie el módulo generado en el directorio de módulos de Nginx:
cp objs/ngx_pagespeed.so /usr/share/nginx/modules/
En este punto, el módulo ngx_pagespeed está compilado en su sistema. Ahora puede continuar con el siguiente paso.
Configurar Nginx para usar el módulo ngx_pagespeed
A continuación, deberá configurar Nginx para usar el módulo ngx_pagespeed. Primero, edite el archivo de configuración principal de Nginx y defina la ruta del módulo ngx_pagespeed:
nano /etc/nginx/nginx.conf
Agregue la siguiente línea al principio del archivo:
load_module modules/ngx_pagespeed.so;
Guarde y cierre el archivo cuando haya terminado.
A continuación, cree un directorio para cachés de velocidad de página con el siguiente comando:
mkdir -p /var/ngx_pagespeed_cache
Establezca la propiedad adecuada con el siguiente comando:
chown -R www-data:www-data /var/ngx_pagespeed_cache
A continuación, edite el archivo de configuración de host virtual predeterminado de Nginx y agregue la configuración de velocidad de página:
nano /etc/nginx/sites-available/default
Reemplazó todas las líneas con las siguientes líneas:
server { listen 80; server_name example.com; root /var/www/html; index index.nginx-debian.html index.html index.htm; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { try_files $uri $uri/ =404; } pagespeed on; pagespeed FileCachePath "/var/ngx_pagespeed_cache/"; pagespeed RewriteLevel OptimizeForBandwidth; location ~ ".pagespeed.([a-z].)?[a-z]{2}.[^.]{10}.[^.]+" { add_header "" ""; } location ~ "^/pagespeed_static/" { } location ~ "^/ngx_pagespeed_beacon$" { } pagespeed RewriteLevel CoreFilters; }
Guarde y cierre el archivo cuando haya terminado. Luego, verifica Nginx por cualquier error de sintaxis usando el siguiente comando:
nginx -t
Deberías obtener el siguiente resultado:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Finalmente, reinicie el servicio Nginx para aplicar los cambios:
systemctl restart nginx
También puede verificar el estado del servicio Nginx usando el siguiente comando:
systemctl status nginx
Deberías obtener el siguiente resultado:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-11-26 05:32:23 UTC; 20s ago Docs: man:nginx(8) Process: 363 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 385 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 386 (nginx) Tasks: 3 (limit: 2353) Memory: 14.4M CGroup: /system.slice/nginx.service ??386 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??387 nginx: worker process ??388 nginx: worker process Nov 26 05:32:23 ubuntu2004 systemd[1]: Starting A high performance web server and a reverse proxy server... Nov 26 05:32:23 ubuntu2004 systemd[1]: Started A high performance web server and a reverse proxy server.
Una vez que haya terminado, puede continuar con el siguiente paso.
Verificar el módulo ngx_pagespeed
En este punto, Nginx está configurado con compatibilidad con ngx_pagespeed. Ahora, es hora de probarlo, ya sea que esté instalado o no.
Para probar la velocidad de la página, ejecute el siguiente comando especificando su nombre de dominio:
curl -I -p http://example.com
Si todo está bien, debería obtener el siguiente resultado:
HTTP/1.1 200 OK Server: nginx/1.18.0 (Ubuntu) Content-Type: text/html Connection: keep-alive Vary: Accept-Encoding Date: Wed, 25 Nov 2020 11:58:56 GMT X-Page-Speed: 1.13.35.2-0 Cache-Control: max-age=0, no-cache
En el resultado anterior, X-Page-Speed:1.13.35.2-0 significa que PageSpeed está activo y optimizando su sitio web.
Conclusión
¡Felicidades! ha instalado con éxito ngx_pagespeed con Nginx en el servidor Ubuntu 20.04. Espero que este módulo aumente el rendimiento de su servidor web Nginx y acelere el sitio web. Siéntase libre de preguntarme si tiene alguna pregunta.