Я пытаюсь использовать пакет phpmyadmin, установленный через apt в Ubuntu 10.10 с NginX, и хотя в конечном итоге мне удалось заставить его работать, я не думаю, что делаю это правильно:
server {
listen 80; ## listen for ipv4
server_name vpsnet.dev;
error_log /home/robin/dev/vpsnet/error.log;
access_log /var/log/nginx/vpsnet.access.log;
location / {
root /home/robin/dev/vpsnet/webroot;
index index.php index.html;
if (-f $request_filename) {
break;
}
if (!-f $request_filename) {
rewrite ^/(.+)$ /index.php?url=$1 last;
break;
}
}
location /phpmyadmin {
root /usr/share;
index index.php index.html;
}
location ~ ^/phpmyadmin/.*\.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
fastcgi_param SERVER_NAME $host;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/robin/dev/vpsnet/webroot/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
fastcgi_param SERVER_NAME $host;
}
}
Речь идет, в частности, об этой части:
location /phpmyadmin {
root /usr/share;
index index.php index.html;
}
location ~ ^/phpmyadmin/.*\.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
fastcgi_param SERVER_NAME $host;
}
Если я установлю root
директива к /usr/share/phpmyadmin
и соответственно fastcgi_param SCRIPT_FILENAME
к /usr/share/phpmyadmin/$fastcgi_script_name;
Я получаю 404.
Я полагаю, что сервер передает /phpmyadmin/
часть URL-адреса сервера fastcgi, но меня это смущает, поскольку я исхожу из использования Apache, и это не то, как подобные вещи работают с этим.
Мне просто интересно, может ли кто-нибудь пролить свет на это, почему он действует так и делаю ли я что-то не так. «Идеальная» установка была бы отличной, или, по крайней мере, некоторая информация о том, как лучше понять конфигурацию NginX.
Посмотрите, работает ли это:
location /phpmyadmin {
alias /usr/share/phpmyadmin;
index index.php index.html;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
fastcgi_param SERVER_NAME $host;
}
Ваша конфигурация не неправильно или что-нибудь. С помощью root
внутри location
блоков не рекомендуется, потому что, если вы получаете много блоков местоположения, он начинает запутываться (поэтому лучше иметь один корень на каждый блок сервера), но это не ваш случай, и fastcgi
настройки обычно делаются шире (для всех запросов php).