I'm trying to configure phpMyAdmin so I've set the flowing location in Nginx however it apends the "pma" to the root directory:
2012/08/14 13:59:49 [error] 10151#0: *2 "/usr/share/phpMyAdmin/pma/index.php" is not found (2: No such file or directory), client: 192.168.1.2, server: domain.com, request: "GET /pma/ HTTP/1.1", host: "192.168.1.24"
Config:
location ^~ /pma {
root /usr/share/phpMyAdmin;
location ~ \.php$ {
root /usr/share/phpMyAdmin;
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param HTTPS on;
}
## HTTP to HTTPS redirect
server {
listen 80;
root /var/empty;
server_name domain.com;
rewrite ^ https://domain.com$request_uri permanent;
}
server {
listen 443 default_server ssl;
root /var/www/html;
index index.php index.html index.htm;
server_name domain.com;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param HTTPS on;
}
## phpMyAdmin
location ^~ /pma {
alias /usr/share/phpMyAdmin/;
try_files $uri $uri/ /index.php;
location ~ ^/pma(.+\.php)$ {
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_index index.php;
alias /usr/share/phpMyAdmin$1;
fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin$1;
include fastcgi_params;
fastcgi_param HTTPS on;
try_files $uri $uri/ /index.php?q=$request_uri;
}
}
## deny access to .htaccess files, if Apache's document root concurs with nginx's one
location ~ /\. {
access_log off;
log_not_found off;
deny all;
}
#serve static files directly
location ~* \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|mp3)$ {
access_log off;
log_not_found off;
expires 2w;
add_header Pragma "public";
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
}
Because it is... the way
root
directive works.If you want to use
root
directive inside thelocation
block, you must specify an URI same as the directory name and strip it off from theroot
, something like this:If you want to keep URI simpler, use
alias
directive instead: