WordPress ウェブサイトを Nginx で構成しましたが、存在しない .php ページ以外はすべて正常に動作します。これらのページには、nginx のデフォルトの 404 ページが見つからないというエラーが返されます。なぜでしょうか?
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/vpsproject.site;
# Add index.php to the list if you are using PHP
index index.php;
server_name vpsproject.site;
location / {
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php$is_args$args;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php7.4-fpm:
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
# deny access to .git related folders or files
#
location ~ /\.git {
deny all;
}
答え1
.php
これは、nginx がソケットでリッスンしている PHP-FPM プロセスにファイルのリクエストを送信するため発生しますunix:/run/php/php7.4-fpm.sock
。PHP-FPM プロセスはファイルが存在するかどうかを確認し、存在しない場合は 404 ステータス コードを返します。
一方、他のすべての URL のデフォルトのリクエスト フローは、nginx が最初にファイルまたはディレクトリが存在するかどうかを確認します。存在する場合は、コンテンツを送信します。
それ以外の場合、nginx はリクエストを に送信し/index.php
、そのリクエストはソケット経由で PHP-FPM プロセスに送信されます。
次に、WordPress フロント コントローラーがリクエストを処理し、見つからない場合は独自の 404 ページを提供します。