2

Ngigx + PHP-FPMのセットアップとルートディレクトリでの作業ですが、仮想ディレクトリを機能させるのに問題があります。

//localhost/pb/test.phpでc:\ opt \ php \ public \ test.phpを実行したいのですが、「入力ファイルが指定されていません」で壊れます。実際、.htmlファイルでも機能しませんが、機能したら、php-directiveを/pbでも機能させたいと思います。

現在のnginx.conf:

server {
    listen       80;
    server_name  localhost;

    location / {
        root   html;
        index  index.html index.htm index.php;
    }

location /pb/ {
    root   /opt/php/public;
        index  index.html index.htm index.php;
}

location ~ \.php$ {
        fastcgi_pass    127.0.0.1:9123;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include         fastcgi_params;
}
}
4

1 に答える 1

1

http://nginx.org/en/docs/http/ngx_http_core_module.html#locationは、nginxが場所と一致する方法を説明しています。この場合、プレフィックスの場所/ pb /は一致し、nginxは*.phpの一致する場所に到達しません。

私が試みるのは、名前付きの場所を設定することです(@bitはそれを名前付きの場所にします):

location @fastcgi {
  fastcgi_pass    127.0.0.1:9123;
  fastcgi_index   index.php;
  fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
  include fastcgi_params;
}

次に、次のように、他の場所からのtry_filesディレクティブでそれを参照します。

location /pb/ {
  root   /opt/php/public;
  index  index.html index.html;
  try_files $uri @fastcgi;
} 

location ~ \.php$ {
  alias @fastcgi;
}

上記のtryファイルは、最初に完全一致ファイル名を試行し、それが見つからない場合は、@fastcgiの場所にリクエストを渡します。

または、/pb/ロケーション内のネストされたロケーションブロックでfastcgiビットを繰り返すだけでオフコースにすることもできます

于 2012-08-15T19:36:40.073 に答える