WordPress 在带有 Nginx 的子目录中:访问仪表板?

WordPress 在带有 Nginx 的子目录中:访问仪表板?

我想建立一个 WordPress 博客,但不采用典型配置:

  • 主站点位于 www.example.com截至目前,它只有一个带有图像的静态 index.html 文件,我们可能会使用 index.php 来显示一些信息并访问网站的高级部分

  • 博客,使用 WordPress,在 www.example.com/blog

我在 Nginx 下进行了此项设置,但尽管我能够看到我的静态主页 www.example.com 和我的博客 www.example.com/blog,但我无法访问 WordPress 的管理面板,因此我无法登录或撰写新帖子。

这是 /etc/nginx/sites-enabled/www.example.com 配置文件:

server {
    server_name  www.example.com;
    rewrite ^(.*) http://example.com$1 permanent;
}

server {
   listen   80;
   server_name  example.com;

   access_log  /var/www/www.example.com/log/access.log;
   error_log      /var/www/www.example.com/log/error.log info;

   index index.php;

   location / {
        set $php_root /var/www/www.example.com;
        try_files $uri $uri/ /index.php?q=$uri&$args;
        }

   location /blog {
        set $php_root /var/www/www.example.com;
        try_files $uri $uri/ /blog/index.php?q=$uri&$args;
        }

   ## Images and static content is treated differently

   location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|\
rtf|js)$ {
         access_log        off;
         expires           30d;
         root /var/www/www.example.com;
    }

    location ~* \.php$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass   backend;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $php_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param  QUERY_STRING     $query_string;
        fastcgi_param  REQUEST_METHOD   $request_method;
        fastcgi_param  CONTENT_TYPE     $content_type;
        fastcgi_param  CONTENT_LENGTH   $content_length;
        fastcgi_intercept_errors        on;
        fastcgi_ignore_client_abort     on;
        fastcgi_read_timeout 180;

    }


    ## Disable viewing .htaccess & .htpassword
    location ~ /\.ht {
        deny  all;
    }
}
upstream backend {
              server 127.0.0.1:9000;

}

我必须做什么才能访问管理面板?我猜这与 php 位置有关,但现在确定要触摸什么 :(

答案1

对于任何 PHP 来说,这根本行不通。你在一个位置设置一个变量,然后在另一个位置使用它,这在 Nginx 中行不通。范围仅向下继承,而不是向上或横向继承,因此 http -> 服务器 -> 位置,而不是位置 -> 位置。

除此之外,实际上没有必要使用自定义变量来表示 PHP 根目录,您只需使用常规根指令(在服务器上下文中)指定您的根目录,然后使用内置变量 $document_root 作为您的 SCRIPT_FILENAME fastcgi 参数。

答案2

要修复此配置,请root在块中设置一个指令server

root /var/www/www.example.com;

$document_root然后在你的中使用fastcgi_param

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

set $php_root可以删除这些调用。正如@MartinFjordvald 指出的那样,它们无论如何都不会做任何事情。

相关内容