server {
listen 80;
server_name pwta;
root html;
location /test/{
alias html/test/;
autoindex on;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
この構成は機能します。ただし、location /test/
が置き換えられた場合。 location /testpath/
動作しません(入力ファイルが指定されていません)。エイリアスディレクティブの説明に基づいて、「場所」の部分が削除されたため、/testpath/info.php
はhtml/test/info.php
になると想定しました。
提案をありがとう。
server {
listen 80;
server_name pwta;
index index.html index.php;
root html;
location /testpath/ {
alias html/test/;
}
location ~ ^/testpath/(.+\.php)$ { ### This location block was the solution
alias html/test/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$1;
include fastcgi_params;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
alias
ディレクティブとroot
ディレクティブはどちらも、絶対パスで使用するのが最適です。相対パスを使用できますが、それらはnginxのコンパイルに使用されるprefix
configオプションに相対的であり、通常は必要なものではありません。
これは、nginx -V
を実行し、--prefix=
に続く値を見つけることで確認できます。
ログを見てこれを自分で証明すると、「そのようなファイルはありません」というエラーが見つかります。