#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)
.