Estoy tratando de configurar phpMyAdmin, así que configuré la ubicación fluida en Nginx, sin embargo, agrega el "pma" al directorio raíz:
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";
}
}
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client:..."
Respuestas:
Porque es ... la forma en
root
que funciona la directiva.Si desea utilizar la
root
directiva dentro dellocation
bloque, debe especificar un URI igual que el nombre del directorio y quitarlo delroot
, algo como esto:Si desea mantener URI más simple, use la
alias
directiva en su lugar:fuente
2012/08/15 11:34:43 [error] 20685#0: *526 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.1.130, server: domain.com, request: "GET /pma/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/www.sock:", host: "192.168.1.24"
. Me gusta Nginx, pero el alias simple para subdirectorio es bastante complicado en comparación con Apache^~
delocation ^~ /pma
. 2. Coloque este bloque de ubicación sobre ellocation ~ \.php$
.