존재하지 않는 .php를 제외하고 Wordpress 및 nginx의 모든 페이지가 잘 작동합니다.

존재하지 않는 .php를 제외하고 Wordpress 및 nginx의 모든 페이지가 잘 작동합니다.

Nginx에서 WordPress 웹사이트를 구성했는데 모든 것이 잘 작동하지만 존재하지 않는 .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 페이지를 제공합니다.

관련 정보