Пользовательский путь NGiNX для phpmyadmin

#nginx #phpmyadmin

#nginx #phpmyadmin

Вопрос:

Я пытаюсь изменить каталог phpmyadmin, который работает с единым входом из моего основного веб-корня. У меня ниже приведена конфигурация моего виртуального хоста.

         listen 80 ;
        listen [::]:80 ;

        root /var/www/html;
        index index.php index.html index.htm ;
        server_name dewittborough.example.com;
       # add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
        location / {
        include "/etc/nginx/custom_wp" ;
            try_files $uri $uri.php $uri/ /phpmyadmin;
    }
   include /etc/nginx/skip_cache.conf ;
   include /etc/nginx/gzip_location.conf ;
   include /etc/nginx/header.conf ;
    location ~ .php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass  unix:/var/run/php/php7.3-fpm.sock;
    include "/etc/nginx/customfastcgi" ;
    proxy_connect_timeout 300;
    proxy_send_timeout 300;
    proxy_read_timeout 300;
    send_timeout 300;
    client_max_body_size 256M;
    include /etc/nginx/fastcgi_main.conf ;
    }
    location = /phpmyadmin {
    root /var/www/;
}
}
 

если я перемещу каталог phpmyadmin в /var/www/, я получаю 404 not found.
Пример URL для входа в систему выглядит следующим образом
https://dewittborough.example.com/phpmyadmin/sso.php?amp;remote_token=ikoblfqshqakinuiqd

Комментарии:

1. Проверьте журналы ошибок и доступа NGINX, вы должны увидеть полный путь, к которому он пытается получить доступ. Если это не даст вам подсказки, что делать — обновите свой вопрос с помощью записей журнала.

2. в журналах ошибок нет ошибок. журналы доступа упоминаются ниже. MYIP - - [31/Dec/2020:10:15:53 0000] "GET /phpmyadmin/sso.php?container=dewittboroughamp;remote_token=jxtjpaclarrkzntjiv HTTP/1.0" 404 139 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36" "myIP"

3. Как насчет того, чтобы не устанавливать phpMyAdmin ?

Ответ №1:

Прежде всего, у вас есть местоположение PMA, объявленное = знаком. Это означает, что местоположение будет отображаться только при доступе /phpmyadmin . Это не вызовет местоположение с /phpmyadmin/sso.php , поскольку оно не равно /phpmyadmin . Итак, сначала измените местоположение на это:

 location /phpmyadmin/ {
  ...
}
 

Далее будет ваша root директива. Одна вещь root заключается в том, что он объединяет root и location . Итак, с такой конфигурацией:

 location /phpmyadmin/ {
  root /var/www;
}
 

NGINX будет искать файлы в /var/www/phpmyadmin/ . Если вам не нравится такое поведение, поменяйте root местами с alias :

 location /phpmyadmin/ {
  alias /var/www/; # Beware of this trailing slash (/), it's mandatory.
}
 

С помощью этой конфигурации вы сможете получить доступ index.php и к другим файлам в /var/www/ under /phpmyadmin/ . Будьте осторожны, хотя это /phpmyadmin/html/ приведет вас /var/www/html/ к.

Комментарии:

1. проблема по-прежнему сохраняется, в журналах нет ошибок. location /phpmyadmin/ { alias /var/www/; }

2. @wajahat021 Вы можете не увидеть 404 в журнале ошибок, если у вас log_not_found off; что-то есть в конфигурации или, возможно, вы просматриваете неправильный файл (журнал ошибок отделен от журнала доступа). Там должна быть строка, подобная этой: [error] 6#6: *1 open() "/var/www/static/foo/bar" failed (2: No such file or directory) .