programing

여러 nginx 서버 블록을 구성할 수 없습니다.

lastmoon 2023. 9. 14. 23:26
반응형

여러 nginx 서버 블록을 구성할 수 없습니다.

최근에 라즈베리 파이3(라스비안 스트레치)에 nginx와 php7.0을 설치했는데 서버 구성 파일을 구성할 수 없었습니다.nginx와 php에 대한 정보는 다음과 같습니다.

$ sudo nginx -v
nginx version: nginx/1.10.3

$ sudo php -v
PHP 7.0.30-0+deb9u1 (cli) (built: Jun 14 2018 13:50:25) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.30-0+deb9u1, Copyright (c) 1999-2017, by Zend Technologies

서버 구성 파일은 다음과 같습니다.

/etc/nginx/messages-사용 가능/messages

 server {
    listen 80;
    server_name example.com www.example.com;

    error_log /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;

    include global/restrictions.conf;

    # Root
    location / {
        root /var/www/root/html;
        index index.php index.htm index.html index.nginx-debian.html;
        try_files $uri $uri/ =404;
        # pass the PHP scripts to FastCGI server
        include global/root.conf;
    }


    # WordPress
    location /blog/ {
        root /var/www/blog/html;
        # pass the PHP scripts to FastCGI server
        include global/wordpress.conf;
    }

    # DokuWiKi
    location /wiki/ {
        root /var/www/wiki/html;
        index index.php index.htm index.html;
        try_files $uri $uri/ =404;
        # pass the PHP scripts to FastCGI server
        include global/wiki.conf;
    }

    # NextCloud
    # location /drive/ {
        # root /var/www/drive/html;
        # pass the PHP scripts to FastCGI server
        # include global/.conf;
    # }

}

(next cloud는 아직 구성되지 않았습니다.)

/etc/nginx/global/root.conf & /etc/nginx/global/wiki.conf (두 파일의 내용이 동일합니다.)

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php7.0-fpm.sock;
}

location ~ /\.ht {
    deny all;
}

/etc/nginx/global/wordpress.conf

# WordPress single site rules. Designed to be included in any
# server {} block.

# This order might seem weird - this is attempted to match last if
# rules below fail. http://wiki.nginx.org/HttpCoreModule
location /blog/ {
    try_files $uri $uri/ /index.php?$args;
}

# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;

# Directives to send expires headers and turn off 404 error
# logging.
location ~*
^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$
{
       access_log off; log_not_found off; expires max;
}

# Uncomment one of the lines below for the appropriate caching
#plugin (if used). include global/wordpress-wp-super-cache.conf;
#include global/wordpress-w3-total-cache.conf;

# Pass all .php files onto a php-fpm/php-fcgi server.
location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    if (!-f $document_root$fastcgi_script_name) {
        return 404;
    }
    # This is a robust solution for path info security issue and
    # works with "cgi.fix_pathinfo = 1" in /etc/php.ini (default)

    include fastcgi_params;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
#   fastcgi_intercept_errors on;
    fastcgi_pass unix:/var/run/php7.0-fpm.sock;
}


# Deny all attempts to access hidden files such as .htaccess,
# .htpasswd, .DS_Store (Mac). Keep logging the requests to parse
# later (or to pass to firewall utilities such as fail2ban)
location ~ /\. {
    deny all;
}

# Deny access to any files with a .php extension in the uploads
# directory Works in sub-directory installs and also in multisite
# network Keep logging the requests to parse later (or to pass to
# firewall utilities such as fail2ban)
location ~* /(?:uploads|files)/.*\.php$ {
    deny all;
}

이렇게 구성한 이유는 다음과 같습니다.

A. 각 서브디렉토리마다 다른 설정 적용 가능 (다음 클라우드에 wordpress' 404페이지를 표시하고 싶지 않습니다)

B. global configuration.conf를 포함하여 중복되는 구성 파일만 포함하면 됩니다.

문제는 다음과 같습니다.

A. 서버는 각 하위 디렉터리에 파일도 표시하지 않습니다.루트에 nginx 웰컴 페이지가 표시되며(제가 제거했습니다) 하위 디렉터리 아래에 파일이 표시되지 않습니다(예: "/var/www/whosts/hosts"에 있는 "example.com/wiki "은 404 페이지만 표시합니다).

B. php가 제대로 구성되지 않은 것 같습니다.

미리 감사드립니다.

php-fpm을 설치해야 문제가 해결됩니다.

php-fpm 버전 7.0 설치 명령

sudo apt-get install php7.0-fpm

언급URL : https://stackoverflow.com/questions/51471330/i-cant-configure-multiple-nginx-server-blocks

반응형