NGINX 允许访问静态资产和 index.php

NGINX 允许访问静态资产和 index.php

我们有一个旧的代码库,它将所有内容都转储到公共文档根目录中,因此想要将可以访问的文件列入白名单。

这实际上是我们当前的配置

server {
    root /home/forge/www.our-website.com/;

    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

我们有一个index.php,所有动态内容都会通过它进行路由。

我们还有一个名为的目录assets,其中包含文档根目录中的静态 css/images/js 等。


我们如何才能仅允许访问 index.php 文件和 assets 目录的内容?

谢谢 :)

答案1

尝试这个

server {

root /home/forge/www.our-website.com/;

index index.php;

#Deny access to everything that don't match 
location / { deny all; }

#Allow root directory so requests could be passed to index.php
location = / {allow all;} 

#Allow index.php
location = /index.php { 
    allow all;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

#Allow assets directory
location /assets/ { allow all;}

}

相关内容