![Невозможно получить доступ к панели инструментов Wordpress с помощью обратного прокси-сервера nginx](https://rvso.com/image/776285/%D0%9D%D0%B5%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%20%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C%20%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%20%D0%BA%20%D0%BF%D0%B0%D0%BD%D0%B5%D0%BB%D0%B8%20%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2%20Wordpress%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0%20nginx.png)
Я столкнулся с небольшой проблемой при настройке 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'];
}