@MikhailBond
Студент магистратуры

Как исправить конфиг Nginx для работы phpmyadmin?

Предисловие )
Суть вопроса в следующем, есть рабочий сервер на nginx, который собирался для тестов на десктопной убунту 16.04, отладив всю работу на нем, перед переносом на продакшен решил пересобрать сервер уже на серверной версии все той же убунту 16.04. На этом различия заканчиваются в остальном конфиги настройки и версии пакетов идентичны...
Ситуация в следующем: при переходе по адресу домен/phpmyadmin открывается окно авторизации, после нажатия клавиши ок на собираемом сервере выявляется проблема в виде того, что запрос перенаправляется на индекс сайта (как я понимаю но это не точно) вместо того что бы идти на индекс СУБД. То есть в адресной строке видим это
192.168.0.53/index.php?token=35a415ef8c8cac6fe8cf1...
На первоначальной сборке такого не происходит, хотя конфиги идентичны... Во втором же случае при нормальной отработке адрес имеет следующий вид 192.168.83.53/phpmyadmin/index.php?token=0ca9ef776d87ec33704959d69fad204d
Куда то пропадает "/phpmyadmin/" из запроса...
Конфиг дефолта кладу сюда:
spoiler
server {
	listen 80;
	root /var/www/html/delc.laravel/public;
	index index.php index.html;
	server_name delc.laravel www.delc.laravel;

	location /{
		try_files $uri $uri/ /index.php?$query_string;
	}
	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
		fastcgi_split_path_info ^(.+\.php)(/.+)$;
		fastcgi_pass unix:/run/php/php7.0-fpm.sock;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
	}

	#phpMyAdmin
	
	location /phpmyadmin {
	root /usr/share/;
	index index.php;
	try_files $uri $uri/ =404;
	
	location ~ /phpmyadmin/(doc|sql|setup)/ {
		deny all;
	}
	
	location ~ /phpmyadmin/(.+\.php)$ {
		fastcgi_pass unix:/run/php/php7.0-fpm.sock;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
		include snippets/fastcgi-php.conf;
	}}



	location ~ /\.ht {
		deny all;
	}
}
  • Вопрос задан
  • 212 просмотров
Пригласить эксперта
Ответы на вопрос 1
TaHKucT
@TaHKucT
Linux администратор
location можно задать префиксной строкой или регулярным выражением. Регулярные выражения задаются либо с модификатором “~*” (для поиска совпадения без учёта регистра символов), либо с модификатором “~” (с учётом регистра). Чтобы найти location, соответствующий запросу, вначале проверяются location’ы, заданные префиксными строками (префиксные location’ы). Среди них ищется location с совпадающим префиксом максимальной длины и запоминается. Затем проверяются регулярные выражения, в порядке их следования в конфигурационном файле. Проверка регулярных выражений прекращается после первого же совпадения, и используется соответствующая конфигурация. Если совпадение с регулярным выражением не найдено, то используется конфигурация запомненного ранее префиксного location’а.

https://nginx.ru/ru/docs/http/ngx_http_core_module...

Скорей всего запрос к phpmyadmin/index.php уходит не в "location ~ /phpmyadmin/(.+\.php)$", а в "location ~ \.php$" (потому что первое совпадение для location с регулярным выражением).
Посмотрите или тут (рекомендации непосредственно от Игоря Сысоева по написанию конфигов) или тут (там есть непосредственно пример конфига для сайта, который лежит по своему root-адресу и phpmyadmin по своему root-адресу).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы