![nginx リバース プロキシを使用して Wordpress ダッシュボードにアクセスできない](https://rvso.com/image/776285/nginx%20%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9%20%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%20Wordpress%20%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84.png)
ApacheバックエンドへのリバースプロキシとしてNginxを使用してWordPressを設定するときに、ちょっとした問題に直面しています。すべてのページは読み込まれていますが、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
リバースプロキシとしてnginxを使用して、WordpressとそのダッシュボードをApacheで実行できました
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'];
}