У нас есть старая база кода, которая сбрасывает все в корень общедоступного документа, поэтому мы хотим внести в белый список, к каким файлам можно получить доступ.
Это фактически наша текущая конфигурация
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 и содержимому каталога ресурсов?
Спасибо :)
Попробуй это
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;}
}