J'essaie de configurer phpMyAdmin, j'ai donc défini l'emplacement fluide dans Nginx mais il ajoute le "pma" au répertoire racine:
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:..."
Réponses:
Parce que c'est ... la façon dont la
root
directive fonctionne.Si vous souhaitez utiliser la
root
directive à l'intérieur dulocation
bloc, vous devez spécifier un URI identique au nom du répertoire et le retirer duroot
, quelque chose comme ceci:Si vous voulez garder l'URI plus simple, utilisez
alias
plutôt la directive:la source
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"
. J'aime Nginx mais un alias simple pour le sous-répertoire est assez compliqué comparé à Apache^~
dulocation ^~ /pma
. 2. Placez ce bloc d'emplacement au-dessus delocation ~ \.php$
.