Я столкнулся с небольшой проблемой при настройке WordPress с Nginx в качестве обратного прокси-сервера для серверной части Apache.
Все страницы загружаются, но я получаю сообщение об ошибке, когда пытаюсь войти в панель управления wp-admin.
Ошибка Извините, у вас нет доступа к этой странице.
Я проверил свои права доступа к файлам, префикс базы данных, .htaccess и даже привилегии администратора usermeta в db, все кажется идеальным.
Сайт работал отлично, пока я не настроил обратный прокси-сервер 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>
Вот мой апач порты.конф:
#Слушай 80
Слушай 8081
Вот мой конфиг нгинкс:
сервер {
слушать 80;
слушать [::]:80;
имя_сервера мой_сайт_url;
переписать ^ https://$server_name$request_uri? постоянный;
}
сервер {
слушать 443 ssl;
слушать [::]:443 ssl;
имя_сервера www.my_site_url my_site_url;
место расположения / {
proxy_set_header Хост $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 $ схема;
прокси_пасс http://127.0.0.1:8081;
}
ssl_certificate /var/www/mycert/certificate.pem;
ssl_certificate_key /var/www/mycert/private.key;
}
Последнее, но не менее важное, мое wp-config.php по умолчанию, и я ничего не добавлял, кроме
если ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) ) {
если ( 'https' == $_SERVER['HTTP_X_FORWARDED_PROTO'] ) {
$_SERVER['HTTPS'] = 'включено';
}
}
если ( isset($_SERVER['HTTP_X_REAL_IP'] )) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'];
}