我正在尝试配置 phpMyAdmin,因此我在 Nginx 中设置了流动位置,但是它将“pma”附加到根目录:
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"
配置:
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";
}
}
答案1
我正在尝试配置 phpMyAdmin,因此我在 Nginx 中设置了流动位置,但是它将“pma”附加到根目录
因为这是...方式root
指导性的作品。
如果您想在块root
内使用指令location
,您必须指定一个与目录名称相同的 URI 并将其从中删除,root
如下所示:
location /phpmyadmin {
root /usr/share/;
try_files $uri $uri/ /index.php;
location ~ ^/phpmyadmin(.+\.php)$ {
root /usr/share/;
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
fastcgi_intercept_errors on;
}
}
如果你想让 URI 更简单,请使用alias
指令改为:
location /pma {
alias /usr/share/phpmyadmin/;
try_files $uri $uri/ /index.php;
location ~ ^/pma(.+\.php)$ {
alias /usr/share/phpmyadmin$1;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin$1;
include fastcgi_params;
fastcgi_intercept_errors on;
}
}