En esta ocasión vamos a ir preparando los servidores para emitir Wordpress desde Varios Servidores
Esta es una guía básica. Si algún punto no os convence, siempre podéis buscar más información en algo llamado Google, que va bastante bien según dicen.
Nuestra Configuración
Usamos una combinación de Apache2 y Nginx con en modo Proxy y con Procesamiento inteligente de archivos estáticos y servimos los archivos estáticos desde Ngnix (ambas opciones vienen en Plesk, si no usáis plesk, os lo recomiendo, es muy fácil de instalar en Ubuntu).
PHP
A mis archivos estáticos le añado webp para emitir con este tipo de imágenes y los archivos que queráis (en mi caso epub y algún otro).
Emito con gzip para comprimir las cositas y así la página pesa menos.
En PHP: Yo tengo la última (7.4.9 en este momento) con FPM servido de Nginx. No es oficialmente la estable pero es que me gusta ir de “cool” y a la última.
Luego marco 1280M para el límite de memoria e incremento tiempos de ejecución y demás porque mi página emite como emite y así me viene bien.
Insisto: depende de lo que queráis hacer, esto sirve para emitir una página web normal desde varios servidores con Wordpress, luego hay que ir improvisando.
En directivas adicionales le pongo:
max_input_vars = 5000
En configuración de Apache y PHP
En directivas adicionales de http y https (en las dos lo mismo), pongo expires y demás, así no me complico con plugins o htaccess:
<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
FileETag None
ExpiresDefault "access plus 14 days"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/webp "access plus 1 month
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType text/x-javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType text/css "now plus 1 month"
ExpiresByType image/ico "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType text/html "access plus 1 days"
</IfModule>
<IfModule mod_headers.c>
<FilesMatch ".(js|css|xml|gz|html)$">
Header append Vary: Accept-Encoding
</FilesMatch>
</IfModule>
<IfModule mod_headers.c>
Header always append X-Frame-Options SAMEORIGIN
</IfModule>
<IfModule mod_substitute.c>
SubstituteMaxLineLength 50M
</IfModule>
# BEGIN Expire headers
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 5 seconds"
ExpiresByType image/x-icon "access plus 604800 seconds"
ExpiresByType image/jpeg "access plus 604800 seconds"
ExpiresByType image/png "access plus 604800 seconds"
ExpiresByType image/gif "access plus 604800 seconds"
ExpiresByType image/webp "access plus 1 month
ExpiresByType application/x-shockwave-flash "access plus 604800 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 604800 seconds"
ExpiresByType application/javascript "access plus 604800 seconds"
ExpiresByType application/x-javascript "access plus 604800 seconds"
ExpiresByType application/x-font-woff "access plus 604800 seconds"
ExpiresByType application/x-font-svg "access plus 604800 seconds"
ExpiresByType image/svg+xml "access plus 604800 seconds"
</ifModule>
# END Expire headers
Insisto: en las dos, en http y en https.
En directivas adicionales de Nginx pongo:
gzip on;
gzip_disable "MSIE [1-6].(?!.*SV1)";
gzip_proxied any;
gzip_comp_level 5;
gzip_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/bmp image/svg+xml;
gzip_vary on;
# Media: images, icons
location ~* \.(jpeg|jpg|gif|png|ico|cur|gz|svg|svgz|webp)$ {
expires 1M;
access_log off;
add_header Cache-Control "public";
}
Insistencia (soy pesado)
Los tres servidores están iguales, así que los certificados ssl/tls… tres cuartas de lo mismo. Plesk cuenta con una herramienta de exportación que te “clava” configuraciones y archivos. Si partís de cero, es bastante recomendable.
Pues con esto (a no ser que se me olvide algo, que ya lo iremos completando), tendremos los servidores configurados de manera idéntica. Podéis jugar con los parámetros según os venga bien y se acomoden a vuestras necesidades.
Página anterior de la guía