Назад | Перейти на главную страницу

WordPress в подкаталоге с Nginx: доступ к панели инструментов?

Я хочу создать блог WordPress, но не с типичной конфигурацией:

Я настраиваю это под 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, но теперь уверен, что трогать :(

Чтобы исправить эту конфигурацию, установите 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, они все равно ничего не делают.

Это не должно работать ни на одном PHP. Вы устанавливаете переменную в одном месте, а затем используете ее в другом, что не работает в Nginx. Область наследуется только вниз, а не вверх или поперек, поэтому http -> server -> location, никогда не location -> location.

Кроме того, на самом деле нет необходимости использовать пользовательскую переменную для корня PHP, вы должны просто указать свой корень с помощью обычной корневой директивы (в контексте сервера), а затем использовать встроенную переменную $ document_root для вашего параметра SCRIPT_FILENAME fastcgi.