Configura tu Wordpress para que funcione con un proxy delante con Apache - Hosting Linux Debian
Sí, lo sé, hoy voy a hablarte un poco de Wordpress y Apache. Son dos tecnologías que no me convencen mucho y que no me siento cómodo pero que hay que conocer porque son muy muy extendidas (no digo que sean malas eh!)
Lo que te voy a explicar es cómo montar/configurar tu Wordpress para que lo puedas montar con un proxy delante. Si no sabes lo que es un proxy mejor cambia de post porque no te vas a enterar de mucho!!
Configuración del proxy
Supongamos que tenemos una máquina "front" abierta a internet y que será la que se encargará de gestionar las peticiones hacia nuestro Wordpress (que lo tendremos almacenado en otra máquina sin acceso a internet directo).
La configuración del Apache sería:
# Usamos SSL
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName mi-sitio-web.com
DocumentRoot /
ServerAdmin webmaster@localhost
LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# OPCIONAL. Pemitimos/dengamos acceso según IPs
<Location />
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from mi_IP
</Location>
# Habilitamos el proxy
ProxyRequests Off
ProxyPreserveHost On
SSLProxyEngine On
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
RequestHeader set "X-Forwarded-SSL" expr=%{HTTPS}
ProxyPass / http://mi-servidor-interno.local:8000/
ProxyPassReverse / http://mi-servidor-interno.local:8000/
# Configuramos los certificados SSL
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/mi-sitio-web.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mi-sitio-web.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
~
A tener en cuenta:
- En la zona de configuración de SSL, verás "letsencrypt". Si no sabes lo que es aquí te dejo alguna info!
- Para que tu máquina "conozca"/resuelva el nombre de domino interno, debes indicarlo en el fichero /etc/hosts
Configuración del servidor que gestiona el Wordpress
Ahora nos toca configurar el servidor donde vamos a almacenar este wordpress. Recordar que esta máquina accederá a internet mediante el proxy que configuramos arriba por lo que, todo el tráfico, pasará por el proxy.
La configuración del Apache sería:
# Mismo puerto que indicamos en el proxy
<VirtualHost *:8000>
ServerName mi-servidor-interno.local
DocumentRoot /path/hasta/directorio/wordpress
<Directory /path/hasta/directorio/wordpress>
Options +Indexes +FollowSymLinks +ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
# Si usas FPM para procesar los ficheros php, usa esta config (para php8.3)
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Todo esto ten en cuenta que te funcionará en un entorno de Wordpress básico. Me refiero, que no tengas ningún .htaccess con algún redirect o cualquier otra configuración extra.
Eso si!, NO montes tu wordpress en un subdirectorio por favor! Te dará muchos problemas y no tiene mucho sentido la verdad!!!