Ich versuche, phpMyAdmin so zu konfigurieren, dass ich den fließenden Speicherort in Nginx festgelegt habe, aber das "pma" wird an das Stammverzeichnis angehängt:
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"
Konfiguration:
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:..."
Antworten:
Weil es ... so ist, wie die
root
Richtlinie funktioniert.Wenn Sie eine
root
Direktive innerhalb deslocation
Blocks verwenden möchten , müssen Sie einen URI angeben, der mit dem Verzeichnisnamen identisch ist, und ihn von der folgendenroot
entfernen:Wenn Sie die URI einfacher halten möchten, verwenden Sie
alias
stattdessen die Direktive:quelle
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"
. Ich mag Nginx, aber ein einfacher Alias für das Unterverzeichnis ist im Vergleich zu Apache ziemlich kompliziert^~
aus demlocation ^~ /pma
. 2. Platzieren Sie diesen Positionsblock über demlocation ~ \.php$
.