Estoy tratando de crear un contenedor de WordPress a través de HTTPS, tengo Apache ejecutándose en el VPS y usándolo como proxy para enrutar solicitudes al contenedor de WordPress.
Logré acceder al contenedor para cargar la página de instalación de WordPress a través de HTTPS, pero los archivos CSS/JS no se cargan porque se solicitan a través de HTTP. No sé por qué la redirección no funciona con estos archivos, hice otros sitios web como este.
Aquí hay una impresión de la salida.
Si accedo a los archivos en ' http://example.com/wp-admin/css/install.min.css?ver=5.2.2 ', la redirección funciona bien (impresión del archivo css a través de HTTPS después de acceder al enlace de arriba )
Esta es la redirección de 80 a 443 en el dominio.
<VirtualHost *:80> ServerName example.com ServerAdmin admin@example.com Redirect permanent / https://example.com/ </VirtualHost>Aquí está el proxy en 443:
<IfModule mod_ssl.c> <VirtualHost *:443> ServerName example.com ProxyPreserveHost On ProxyPass / http://172.20.0.100/ ProxyPassReverse / http://172.20.0.100/ SSLEngine on SSLCertificateFile /fullchain.pem SSLCertificateKeyFile /privkey.pem </VirtualHost> </IfModule>El contenedor de WordPress solo escucha en el puerto 80
Aquí está el archivo docker-compose:
version: '3' services: wpdb: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: pass MYSQL_DATABASE: wordpress MYSQL_USER: wordpres_admin MYSQL_PASSWORD: pass wordpress: depends_on: - wpdb image: wordpress:latest networks: default: ipv4_address: 172.20.0.100 restart: always environment: WORDPRESS_DB_HOST: wpdb:3306 WORDPRESS_DB_USER: wordpres_admin WORDPRESS_DB_PASSWORD: pass volumes: db_data: {} networks: default: external: name: router_default¿Como puedó resolver esté problema?
Encontré la solución, parece que WP ya está configurado para usarse a través de un proxy con SSL y no hay necesidad de cambiar nada en el contenedor de WP o la configuración de WP, todo lo que hay que hacer es reescribir el encabezado de la solicitud con :
RequestHeader set X-Forwarded-Proto "https"La configuración de proxy actualizada se ve así:
<IfModule mod_ssl.c> <VirtualHost *:443> ServerName example.com <IfModule headers_module> RequestHeader set X-Forwarded-Proto "https" </IfModule> ProxyPreserveHost On ProxyPass / http://172.20.0.100/ ProxyPassReverse / http://172.20.0.100/ SSLEngine on SSLCertificateFile /fullchain.pem SSLCertificateKeyFile /privkey.pem </VirtualHost>Para más información: https://wordpress.org/support/article/administration-over-ssl/#using-a-reverse-proxy y https://webmasters.stackexchange.com/questions/97005/setting-x-forwarded -proto-bajo-apache-2-4