Nginx + php-fpm + phpmyadmin

N
На сайте с 05.06.2010
Offline
5
6189

Друзья, помогите решить проблему, уже мозг взрывается :(

Попробовали сабжевую связку.

Всё вроде хорошо, но никак не получается настроить нормальный доступ к phpmyadmin.

Что хочется получить: Доступ по урлу вида site.ru/phpmyadmin/

Что получается: Если вбить желаемый урл, то будет белая страница, а еррорах нгинкса такое:

2011/02/22 21:55:57 [notice] 4678#0: signal 3 (SIGQUIT) received, shutting down

2011/02/22 21:55:57 [notice] 4679#0: gracefully shutting down
2011/02/22 21:55:57 [notice] 4679#0: exiting
2011/02/22 21:55:57 [notice] 4681#0: gracefully shutting down
2011/02/22 21:55:57 [notice] 4680#0: gracefully shutting down
2011/02/22 21:55:57 [notice] 4681#0: exiting
2011/02/22 21:55:57 [notice] 4680#0: exiting
2011/02/22 21:55:57 [notice] 4679#0: exit
2011/02/22 21:55:57 [notice] 4681#0: exit
2011/02/22 21:55:57 [notice] 4680#0: exit
2011/02/22 21:55:57 [notice] 4678#0: signal 17 (SIGCHLD) received
2011/02/22 21:55:57 [notice] 4683#0: gracefully shutting down
2011/02/22 21:55:57 [notice] 4678#0: worker process 4679 exited with code 0
2011/02/22 21:55:57 [notice] 4678#0: worker process 4680 exited with code 0
2011/02/22 21:55:57 [notice] 4678#0: worker process 4681 exited with code 0
2011/02/22 21:55:57 [notice] 4683#0: exiting
2011/02/22 21:55:57 [notice] 4678#0: signal 29 (SIGIO) received
2011/02/22 21:55:57 [notice] 4683#0: exit
2011/02/22 21:55:57 [notice] 4678#0: signal 17 (SIGCHLD) received
2011/02/22 21:55:57 [notice] 4678#0: worker process 4683 exited with code 0
2011/02/22 21:55:57 [notice] 4678#0: exit
2011/02/22 21:55:58 [notice] 4842#0: using the "epoll" event method
2011/02/22 21:55:58 [notice] 4842#0: nginx/0.8.54
2011/02/22 21:55:58 [notice] 4842#0: built by gcc 4.1.2 20080704 (Red Hat 4.1.2-48)
2011/02/22 21:55:58 [notice] 4842#0: OS: Linux 2.6.18-164.6.1.el5
2011/02/22 21:55:58 [notice] 4842#0: getrlimit(RLIMIT_NOFILE): 1024:1024
2011/02/22 21:55:58 [notice] 4843#0: start worker processes
2011/02/22 21:55:58 [notice] 4843#0: start worker process 4844
2011/02/22 21:55:58 [notice] 4843#0: start worker process 4845
2011/02/22 21:55:58 [notice] 4843#0: start worker process 4847
2011/02/22 21:55:58 [notice] 4843#0: start worker process 4848

Если же обратиться по адресу site.ru/phpmyadmin/index.php, то phpmyadmin нормально откроется. При попытке залогиниться из урла будет стерта запись /phpmyadmin и если её туда подставить руками он заработает :)

Если же обработку пхп отдавать не php-fpm, а апаче, то все работает нормально, без странностей.

Конфиг нгинкса для работы с php-fpm

server {

listen 80;
server_name site.ru;

server_tokens off;
access_log /var/log/nginx/access.log main;

location ~* /phpmyadmin/ {
try_files $uri $uri/ =404;
fastcgi_pass localhost:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin/$fastcgi_script_name;
include fastcgi_params;
alias /usr/share/phpMyAdmin/;
}

location / {
try_files $uri $uri/ @wordpress;
index index.php;
root /var/www/vhosts/site.ru/public_html;
}

location ~ \.php$ {
try_files $uri @wordpress;
fastcgi_pass localhost:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
root /var/www/vhosts/site.ru/public_html;
}

location @wordpress {
fastcgi_pass localhost:9000;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
include fastcgi_params;
root /var/www/vhosts/site.ru/public_html;
}
}

И конфиг в связке с апачей

server {

listen 80;
server_name site.ru;

location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

#Отдаем статику
location ~* \.(?!(php|html)$)[^.]*[^\/]$ {
expires max;
access_log off;
root /var/www/vhosts/site.ru/public_html;
}

#Статика для phpmyadmin
location ^~ /phpmyadmin/themes {
alias /usr/share/phpMyAdmin/themes;
expires max;
access_log off;
}

location ^~ /phpmyadmin/js {
alias /usr/share/phpMyAdmin/js;
expires max;
access_log off;
}
}

Подскажите куда копать или где читать, ничего не понимаю :( И даже не могу сообразить как задавать правильный вопрос всезнающему гуглю :)

Andreyka
На сайте с 19.02.2005
Offline
822
#1

Включить в логах уровень debug

Не стоит плодить сущности без необходимости
N
На сайте с 05.06.2010
Offline
5
#2

Включил, ничего нового в логах не добавилось.

Так понимаю у меня где-то ошибка в настройках fastcgi параметров. Вот только где понять не могу.

А да, содержание 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_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
M7
На сайте с 11.07.2010
Offline
17
#3


location = /phpmyadmin/ {
alias /usr/share/phpMyAdmin/;
index index.php index.html index.htm;
}

location ~ /phpmyadmin/.*\.php$ {
if ($fastcgi_script_name ~ /phpmyadmin(/.*\.php)$) {
set $valid_fastcgi_script_name $1;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin$valid_fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}

мой рабочий вариант. в вашем только по-трезвой разобраться смогу.

с наступающим, мужЫки! 🍻

N
На сайте с 05.06.2010
Offline
5
#4
maxim77k:
мой рабочий вариант. в вашем только по-трезвой разобраться смогу.
с наступающим, мужЫки! 🍻

Спасибо!

Промелькнула мысля что в регулярке ошибся, и угасла, за полным их, регулярок, непониманием :)

Пойду вникать. Кстати, мож кто ткнёт пальцем, с чего начать?

Necra добавил 23.02.2011 в 17:12

Возможно кому пригодится. Чуть доработал подсказку от maxim77k.

Всё это вынес в отдельный файл и подключаю для необходимых доменов.


location = /phpmyadmin/ {
alias /usr/share/phpMyAdmin/;
index index.php index.html index.htm;
}

#Для корректного отображения картинок и жаба скриптов.
location ^~ /phpmyadmin/themes {
alias /usr/share/phpMyAdmin/themes;
expires max;
access_log off;
}

location ^~ /phpmyadmin/js {
alias /usr/share/phpMyAdmin/js;
expires max;
access_log off;
}

location ~ /phpmyadmin/.*\.php$ {

#Ограничиваем доступ для всех кроме вписанных IP адресов.
allow 111.111.111.111;
deny all;

if ($fastcgi_script_name ~ /phpmyadmin(/.*\.php)$) {
set $valid_fastcgi_script_name $1;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin$valid_fastcgi_script_name;
include fastcgi_params;
}
M7
На сайте с 11.07.2010
Offline
17
#5

прошу пардону за вчерашнюю пьяную фигню, которую вам скинул и ваше потраченное время на доделывание ее.

все это можно прописать короче:

        location ^~ /phpmyadmin/ {

alias /usr/share/phpMyAdmin/;
index index.php;
location ~ /phpmyadmin(/.*\.php) {
include fastcgi.conf;
fastcgi_param SERVER_NAME $domain;
fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin$1;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
}

алиас по имени phpmyadmin на папку /usr/share/phpMyAdmin/

include fastcgi.conf; - потому что в сборке nginx_0.8.53 с epel в fastcgi_params отсутствует важная строчка fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param SERVER_NAME $domain; - потому что у меня так виртуальные хосты заведены:

    server {

listen 80;
server_name ~^(www\.)?(?P<domain>.+)$;
access_log /var/log/nginx/$domain.access.log main;
root /var/www/$domain/html/;

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий