Невозможно получить доступ к панели инструментов Wordpress с помощью обратного прокси-сервера nginx

Невозможно получить доступ к панели инструментов Wordpress с помощью обратного прокси-сервера nginx

Я столкнулся с небольшой проблемой при настройке WordPress с Nginx в качестве обратного прокси-сервера для Apache backend. Все страницы загружаются, но я получаю ошибку, когда пытаюсь войти в панель управления wp-admin. Ошибка:Sorry, you are not allowed to access this page.

Я проверил права доступа к файлам, префикс базы данных, .htaccess и даже права администратора usermeta в базе данных, все, кажется, идеально. Сайт работал отлично, пока я не настроил обратный прокси nginx.

Вот мойконфигурация 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>

Вот мойapache порты.conf:

   #Listen 80
   Listen 8081

Вот мойКонфигурация 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;
}

И последнее, но не менее важное:wp-config.phpпо умолчанию, и я ничего не добавлял, кроме

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'];
}

решение1

Мне удалось запустить Wordpress и его панель управления на Apache с nginx в качестве обратного прокси-сервера.

конфигурация nginx - это

 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;
}

и в wp-config.php (на сервере Apache) добавляется следующее содержимое

$_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'];
}

Связанный контент