No se puede acceder al panel de Wordpress con el proxy inverso nginx

No se puede acceder al panel de Wordpress con el proxy inverso nginx

Tengo un pequeño problema al configurar WordPress con Nginx como proxy inverso para el backend de Apache. Todas las páginas se están cargando, pero aparece un error cuando intento iniciar sesión en el panel de administración de wp. El error esSorry, you are not allowed to access this page.

Revisé los permisos de mis archivos, el prefijo de la base de datos, .htaccess e incluso los privilegios de administrador de meta de usuario en la base de datos, todo parece estar perfecto. El sitio funcionaba perfectamente bien antes de configurar el proxy inverso nginx.

Aquí está miconfiguración de apache2:

   <VirtualHost *:8081>
       DocumentRoot "/mnt/NAS/wp_data/wordpress/"
       ServerName my_site_url
       ServerAlias www.my_site_url
    
    <Directory "/mnt/NAS/wp_data/wordpress/">
       Options MultiViews FollowSymlinks
       AllowOverride All
       Order allow,deny
       Allow from all
    </Directory>
    
   </VirtualHost>

Aquí está mipuertos de apache.conf:

   #Listen 80
   Listen 8081

Aquí está miconfiguración nginx:

server {
        listen 80;
        listen [::]:80;

        server_name my_site_url;

        rewrite ^ https://$server_name$request_uri? permanent;

}

server {
        listen 443 ssl;
        listen [::]:443 ssl;

        server_name www.my_site_url my_site_url;

        location / {
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_pass http://127.0.0.1:8081;
        }

        ssl_certificate /var/www/mycert/certificate.pem;
        ssl_certificate_key /var/www/mycert/private.key;
}

Por último, pero no menos importante, miwp-config.phpes el predeterminado y no he agregado nada más aparte de

if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) ) {
if ( 'https' == $_SERVER['HTTP_X_FORWARDED_PROTO'] ) {
$_SERVER['HTTPS'] = 'on';
}
}
if ( isset( $_SERVER['HTTP_X_REAL_IP'] ) ) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'];
}

Respuesta1

Pude ejecutar Wordpress y su panel en Apache con nginx como proxy inverso

la configuración de nginx es

 location ^~ /blog/ {
    proxy_pass http://x.y.x.z/;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

y en wp-config.php (en el servidor apache) se agregan los siguientes contenidos

$_SERVER['REQUEST_URI'] = str_replace("/wp-admin/", "/blog/wp-admin/",  $_SERVER['REQUEST_URI']);


if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) ) {
if ( 'https' == $_SERVER['HTTP_X_FORWARDED_PROTO'] ) {
$_SERVER['HTTPS'] = 'on';
}
}
if ( isset( $_SERVER['HTTP_X_REAL_IP'] ) ) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'];
}

información relacionada