Nginx aggiunge il percorso indicato nell'URI


8

Sto provando a configurare phpMyAdmin, quindi ho impostato la posizione di scorrimento in Nginx, ma aggiunge "pma" alla directory principale:

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";
    }

}

Sembra che ciò sia dovuto al fatto che la direttiva "root" dovrebbe essere "alias" invece dopo questo cambiamento sto ottenendo:FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client:..."
HTF

I pannelli di amministrazione sono fuori tema.
HopelessN00b,

Risposte:


8

Sto provando a configurare phpMyAdmin, quindi ho impostato la posizione di scorrimento in Nginx, ma aggiunge "pma" alla directory principale

Perché è ... il modo in cui rootfunziona la direttiva.

Se si desidera utilizzare la rootdirettiva all'interno del locationblocco, è necessario specificare un URI uguale al nome della directory e rimuoverlo da root, qualcosa del genere:

    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;
        }
    }

Se vuoi semplificare l'URI, usa aliasinvece la direttiva:

    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;
        }
    }

Grazie per la spiegazione però sto ancora ricevendo il seguente errore: 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". Mi piace Nginx ma il semplice alias per la sottodirectory è piuttosto complicato rispetto ad Apache
HTF

Pubblica la tua configurazione completa corrente.
quanta

1. Rimuovere il ^~da location ^~ /pma. 2. Posiziona questo blocco di posizione sopra il location ~ \.php$.
quanta
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.