Urichalex
@Urichalex
Кратко о себе)

Как в nginx настроить так, чтобы php файл нельзя было открыть по прямому адресу?

Есть сайт на PHP, работает под nginx
В нем много PHP файлов, но входной скрипт только 1 - index.php
Но по прямой ссылке на файл можно его запустить, например если в браузере перейти /vendor/autoload.php то он попытается открыться.
Соответственно, если на сайте есть уязвимости, позволяющие загрузить PHP то можно его выполнить.
Я хочу, чтобы, если перейти на любой URL кроме index.php например отдавать 404
Переписывать сайт возможности нет
текущий конфиг:
server {
    charset utf-8;
    client_max_body_size 128M;
    server_name site.ru;
    root        /home/username/www/web/site.ru;
    index       index.php;
    access_log  /home/username/www/log/site.ru.access.log;
    error_log   /home/username/www/log/site.ru.error.log;
    listen 80;

    location ~ \.(js|css|gif|png|jpg|jpeg|swf|ico|mov|fla|zip|rar|woff|woff2|ttf|eot|svg)$ {
        root /home/aurich/www/web/site.ru;
    }

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

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php82-fpm.sock;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        try_files $uri =404;
    }
}
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы