Nginx가 `wp-includes` 디렉토리의 파일에 액세스할 수 없는 이유는 무엇입니까?

Nginx가 `wp-includes` 디렉토리의 파일에 액세스할 수 없는 이유는 무엇입니까?

Ubuntu 서버에 WordPress 웹사이트를 설치했습니다. 요청을 수신하고 php-fpm으로 푸시하도록 Nginx를 설정했습니다. pool해당 사이트를 운영하는 사용자가 소유한 모든 파일과 디렉토리를 워드프레스 사이트에서 가질 수 있도록 기능을 사용하고 있습니다 . 나는제안된 파일 권한755디렉토리와 파일에 대해 640.

디렉토리에 있는 특정 파일을 제외하고 웹사이트가 로드됩니다 wp-includes. 디렉토리에서 필요한 특정 사항을 제외하고 관리 대시보드를 사용할 수 있습니다 wp-includes.

다음은 내가 보고 있는 몇 가지 오류입니다 /var/log/nginx/error.log.

2023/10/24 00:38:26 [error] 2611#2611: *10600 open() "/home/user1/www/example.com/wp-includes/css/dashicons.min.css"               failed (13: Permission denied), client: 10.0.0.1, server: example.com, request: "GET /wp-includes/css/dashicons.min.css?ver=6.3.2 HTTP/1.1",                              host: "www.example.com", referrer: "http://www.example.com/"
2023/10/24 00:38:26 [error] 2611#2611: *10602 open() "/home/user1/www/example.com/wp-includes/blocks/navigation/view.min.js"       failed (13: Permission denied), client: 10.0.0.1, server: example.com, request: "GET /wp-includes/blocks/navigation/view.min.js?ver=886680af40b7521d60fc HTTP/1.1",       host: "www.example.com", referrer: "http://www.example.com/"
2023/10/24 00:38:26 [error] 2611#2611: *10603 open() "/home/user1/www/example.com/wp-includes/blocks/navigation/style.min.css"     failed (13: Permission denied), client: 10.0.0.1, server: example.com, request: "GET /wp-includes/blocks/navigation/style.min.css?ver=6.3.2 HTTP/1.1",                    host: "www.example.com", referrer: "http://www.example.com/"
2023/10/24 00:38:26 [error] 2611#2611: *10604 open() "/home/user1/www/example.com/wp-includes/css/admin-bar.min.css"               failed (13: Permission denied), client: 10.0.0.1, server: example.com, request: "GET /wp-includes/css/admin-bar.min.css?ver=6.3.2 HTTP/1.1",                              host: "www.example.com", referrer: "http://www.example.com/"
2023/10/24 00:38:26 [error] 2611#2611: *10605 open() "/home/user1/www/example.com/wp-includes/blocks/navigation/view-modal.min.js" failed (13: Permission denied), client: 10.0.0.1, server: example.com, request: "GET /wp-includes/blocks/navigation/view-modal.min.js?ver=b478fa3cd1475dec97d3 HTTP/1.1", host: "www.example.com", referrer: "http://www.example.com/"
2023/10/24 00:38:26 [error] 2611#2611: *10604 open() "/home/user1/www/example.com/wp-includes/js/admin-bar.min.js"                 failed (13: Permission denied), client: 10.0.0.1, server: example.com, request: "GET /wp-includes/js/admin-bar.min.js?ver=6.3.2 HTTP/1.1",                                host: "www.example.com", referrer: "http://www.example.com/"
2023/10/24 00:38:26 [error] 2611#2611: *10603 open() "/home/user1/www/example.com/wp-includes/js/comment-reply.min.js"             failed (13: Permission denied), client: 10.0.0.1, server: example.com, request: "GET /wp-includes/js/comment-reply.min.js?ver=6.3.2 HTTP/1.1",                            host: "www.example.com", referrer: "http://www.example.com/"
2023/10/24 00:38:26 [error] 2611#2611: *10605 open() "/home/user1/www/example.com/wp-includes/js/hoverintent-js.min.js"            failed (13: Permission denied), client: 10.0.0.1, server: example.com, request: "GET /wp-includes/js/hoverintent-js.min.js?ver=2.2.1 HTTP/1.1",                           host: "www.example.com", referrer: "http://www.example.com/"

Nginx가 디렉토리에 있는 항목을 제외한 모든 항목에 액세스할 수 있는 이유는 무엇입니까 wp-includes?

다음은 참조된 각 파일의 디렉터리 목록입니다.

# ls -al /home
drwxr-xr-x  4 user1 user1 4096 Oct 23 20:52 user1
# ls -al /home/user1/
drwxr-xr-x 3 user1 user1 4096 Oct 23 21:35 www
# ls -al /home/user1/www/
drwxr-xr-x 5 user1 user1 4096 Oct 23 21:52 example.com
# ls -al /home/user1/www/example.com/
-rw-r-----  1 user1 user1   405 Feb  6  2020 index.php
-rw-r-----  1 user1 user1 19915 Jan  1  2023 license.txt
-rw-r-----  1 user1 user1  7399 Jul  5 21:41 readme.html
-rw-r-----  1 user1 user1  7211 May 13 01:35 wp-activate.php
drwxr-xr-x  9 user1 user1  4096 Oct 12 23:12 wp-admin
-rw-r-----  1 user1 user1   351 Feb  6  2020 wp-blog-header.php
-rw-r-----  1 user1 user1  2323 Jun 14 18:11 wp-comments-post.php
-rw-r-----  1 user1 user1  3013 Feb 23  2023 wp-config-sample.php
-r--------  1 user1 user1  3329 Oct 23 21:52 wp-config.php
drwxr-xr-x  5 user1 user1  4096 Oct 24 00:46 wp-content
-rw-r-----  1 user1 user1  5638 May 30 22:48 wp-cron.php
drwxr-xr-x 27 user1 user1 12288 Oct 12 23:12 wp-includes
-rw-r-----  1 user1 user1  2502 Nov 27  2022 wp-links-opml.php
-rw-r-----  1 user1 user1  3927 Jul 16 16:16 wp-load.php
-rw-r-----  1 user1 user1 49441 Jul 17 17:18 wp-login.php
-rw-r-----  1 user1 user1  8537 Jun 22 18:36 wp-mail.php
-rw-r-----  1 user1 user1 25602 Jul 25 10:35 wp-settings.php
-rw-r-----  1 user1 user1 34385 Jun 19 22:27 wp-signup.php
-rw-r-----  1 user1 user1  4885 Jun 22 18:36 wp-trackback.php
-rw-r-----  1 user1 user1  3236 Jun 14 18:11 xmlrpc.php

# ls -al /home/user1/www/example.com/wp-includes
drwxr-xr-x 95 user1 user1   4096 Oct 12 23:12 blocks
drwxr-xr-x  3 user1 user1   4096 Oct 12 23:12 css
drwxr-xr-x 13 user1 user1   4096 Oct 12 23:12 js

# ls -al /home/user1/www/example.com/wp-includes/blocks/
drwxr-xr-x  2 user1 user1   4096 Oct 12 23:12 navigation

# ls -al /home/user1/www/example.com/wp-includes/blocks/navigation
-rw-r-----  1 user1 user1 16081 Jul 19 15:13 style.min.css
-rw-r-----  1 user1 user1  7814 Jun 29 00:08 view-modal.min.js
-rw-r-----  1 user1 user1  1136 Jun 27 18:24 view.min.js

# ls -al /home/user1/www/example.com/wp-includes/css/
-rw-r-----  1 user1 user1 20319 Feb 11  2023 admin-bar.min.css
-rw-r-----  1 user1 user1 59016 Mar  4  2021 dashicons.min.css

# ls -al /home/user1/www/example.com/wp-includes/js
-rw-r-----  1 user1 user1   3536 Feb  2  2023 admin-bar.min.js
-rw-r-----  1 user1 user1   2981 Apr  9  2022 comment-reply.min.js
-rw-r-----  1 user1 user1   1718 Dec 10  2019 hoverintent-js.min.js

nginx website config file:

server {
    server_name example.com www.example.com;
    root /home/user1/www/example.com;

    index index.php index.html index.htm;

    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt { log_not_found off; access_log off; allow all; }
    location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
        expires max;
        log_not_found off;
    }

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_param PHP_VALUE "display_errors=0;\n error_reporting=E_ALL;";
        fastcgi_pass unix:/run/php/php-fpm-www.example.com.sock;
    }

    location ~ /\.ht {
        deny all;
    }

    listen 80;
    listen [::]:80;
}

/etc/php/8.1/fpm/pool.d/user1-domain.conf:

[example.com]
user = user1
group = user1
listen = /run/php/php-fpm-www.example.com.sock;
listen.owner = www-data
listen.group = www-data
pm = ondemand
pm.max_children = 25

버전:

nginx version: nginx/1.18.0
Ubuntu 22.04.3 LTS
PHP 8.1
php8.1-fpm

내가 무엇을 놓치고 있나요?

답변1

정적 파일은 직접 제공 되므로 nginx일반적 php-fpm으로 . 사용자를 그룹에 포함 하거나 다른 방법으로 사용자를 그룹에 포함할 수 있습니다 .nginxwww-datauser1www-datawww-datauser1

답변2

더 많은 문서를 읽은 후 (파일 권한 변경그리고WordPress 강화: 파일 권한) 나는 내 시스템에서 엄격하지 않은 일부 권한을 사용할 것임을 깨달았습니다.

나는 .750​ 읽기 권한을 640부여하자 world모든 것이 작동하기 시작했습니다.

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

www-data지금까지 소유권을 다른 것으로 변경할 필요가 없었습니다 . 사용자 php-fpm및 그룹 설정이 훌륭하게 작동하는 것 같습니다.

user = user1
group = user1
listen.owner = www-data
listen.group = www-data

이를 통해 Nginx는 as로 실행 되고 as를 www-data통해 사이트에 액세스할 수 있습니다 .fpmuser1

관련 정보