NginxはURIで指定されたパスを追加します


8

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

}

「ルート」ディレクティブは、それが「エイリアス」の代わりしかし、この変更した後、私は取得していなければなりませんので、これがあるように見えます:FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client:..."
HTF

管理パネルはトピックから外れています。
HopelessN00b 2015

回答:


8

私はphpMyAdminを設定しようとしているので、フロー位置をNginxに設定しましたが、「pma」がルートディレクトリに付加されています

それは... rootディレクティブが機能する方法だからです。

ブロックroot内でディレクティブを使用する場合locationroot、次のように、ディレクトリ名と同じURIを指定してから削除する必要があります。

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

説明していただきありがとうございます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"。ただし、まだ次のエラーが発生します:。私はNginxが好きですが、サブディレクトリの単純なエイリアスは、Apacheに比べてかなり複雑です
HTF '15

現在の完全な設定を投稿します。
クォンタム2012

1.を^~から取り外しますlocation ^~ /pma。2.このロケーションブロックをの上に置きlocation ~ \.php$ます。
クォンタム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.