Nginx запретить выполнение php в папке

Re: Запретить выполнение php в конкретном каталоге

Спасибо, так работает. Видимо не работало из-за того, что у меня в location ~* ^.+.(jpg|jpeg|gif|png|js|ico)$ < был прописан root.

Конфиг хоста приобрел такой вид:
server <
listen 80;
server_name site.ru;
access_log /var/log/nginx/site.ru.access.log;
error_log /var/log/nginx/site.ru.error.log;

if ($http_user_agent ~ ZmEu) <
return 503;
>

##не принимать от клиентов запросы длиной более 1 Мб
client_max_body_size 1m;

## Default location
location / <
index index.php index.html index.htm;
include /var/www/site.ru/.htaccess;
>

location ^~ /uploads/ <
access_log off;
expires max;
>

location /click/ <
rewrite ^ http://site.ru? permanent;
>

location /robots.txt <
alias /var/www/site.ru/robots_$host.txt;
>

location /sitemap.xml <
alias /var/www/site.ru/uploads/sitemap_$host.xml;
>

## Images and static content is treated different
location ~* ^.+.(jpg|jpeg|gif|png|js|ico)$ <
access_log off;
expires max;
>

## Parse all .php file in the /var/www/site.ru directory
location ~ .php$ <
if ($request_uri = /index.php) <
rewrite ^ http://$host? permanent;#301 redirect
>
fastcgi_split_path_info ^(.+\.php)(.*)$;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/tmp/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/site.ru$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
#кеширование FastCGI-запросов
fastcgi_pass_header «Set-Cookie»; # Необходимо для передачи cookie в соответствующие переменные, например cookie с именем phpsessid будет находится в переменной $cookie_phpsessid

#fastcgi_ignore_headers Cache-Control Expires Set-Cookie; # Игнорируем заголовки, относящиеся к кешированию, полученные от FastCGI-сервера
fastcgi_cache_key «$server_addr:$server_port$request_uri|$cookie_phpsessid»; # Формируем уникальный ключ; в данном случае различаем пользователей с помощью $cookie_phpsessid
fastcgi_cache fastcgi_cache; # Говорим о том, что использовать надо вышеобъявленную кеш-зону fastcgi_cache
fastcgi_temp_path /tmp/nginx/temp 1 2; # Указываем папку для хранения временных файлов
fastcgi_cache_use_stale updating error timeout invalid_header http_500; # Используем вариант из кеша (даже если он устарел) в случае ошибки
fastcgi_cache_valid 200 302 10m;
fastcgi_cache_valid 301 1h;
fastcgi_cache_valid any 1m;
>

server <
listen 80;
server_name www.site.ru;
rewrite ^ http://site.ru$request_uri?;
>

Здесь кажется уже все правильно.

П.С. Очень приятно получить ответ от самого Игоря Сысоева.

Источник

Как запретить доступ к папке и файлам внутри Nginx?

Да, это работает, но если обратится к внутренним фалам папки, то никаких ограничений нет, т.е. index.php выполнится.

Вопрос: Как запретить доступ ко всем папкам на сервере и файлам внутри.

При выполнении просто скачивается php файл. ))

## # You should look at the following URL's in order to grasp a solid understanding # of Nginx configuration files in order to fully unleash the power of Nginx. # https://www.nginx.com/resources/wiki/start/ # https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/ # https://wiki.debian.org/Nginx/DirectoryStructure # # In most cases, administrators will remove this file from sites-enabled/ and # leave it as reference inside of sites-available where it will continue to be # updated by the nginx packaging team. # # This file will automatically load configuration files provided by other # applications, such as Drupal or WordPress. These applications will be made # available underneath a path with that package name, such as /drupal8. # # Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples. ## # Default server configuration # server < listen 80 default_server; listen [::]:80 default_server; # SSL configuration # # listen 443 ssl default_server; # listen [::]:443 ssl default_server; # # Note: You should disable gzip for SSL traffic. # See: https://bugs.debian.org/773332 # # Read up on ssl_ciphers to ensure a secure configuration. # See: https://bugs.debian.org/765782 # # Self signed certs generated by the ssl-cert package # Don't use them in a production server! # # include snippets/snakeoil.conf; root /var/www/myInfo; # Add index.php to the list if you are using PHP index index.php index.html index.htm index.nginx-debian.html; server_name _; location / < # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; # ACCESS TO SERVER allow 111.22.0.0/16; deny all; ># deny access location ~ /.svn/ < deny all; ># pass PHP scripts to FastCGI server # location ~ \.php$ < include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php5.6-fpm.sock; # # # With php-fpm (or other unix sockets): # fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; ># deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht < # deny all; #>> # Virtual Host configuration for example.com # # You can move that to a different file under sites-available/ and symlink that # to sites-enabled/ to enable it. # #server < # listen 80; # listen [::]:80; # # server_name example.com; # # root /var/www/example.com; # index index.html; # # location / < # try_files $uri $uri/ =404; # >#>

Источник

Русские Блоги

Метод реализации для iis, apache и nginx, чтобы запретить выполнение в каталоге сценариев asp и php

В целях безопасности веб-сайтов, во многих каталогах загрузки изображений и других каталогах, в которых не требуется выполнять сценарии, мы можем запретить выполнение сценариев с помощью следующих методов.
Как правило, iis относительно прост, iis6 выглядит так, как показано на рисунке ниже:

Для многих пользователей, приобретающих пространство виртуального хостинга, если поставщик пространства предоставляет программу онлайн-управления, ее также можно реализовать. Просто посмотрите на конкретную помощь.
Вам нужно знать имя каталога, просто задайте его.

iis7 + запрещает выполнение php и т. д.
IIS7 также похож на IIS6.0, выберите каталог, соответствующий сайту, данным, загрузкам и каталогу статических файлов HTML, и дважды щелкните «Отображение программы обработки» на панели функций (рис. 2).

В «Редактировать права доступа к функции . » мы можем просто удалить разрешения на выполнение скрипта. (Рисунок 3)

Apache обычно ограничивается файлами .htaccess
Правила среды Apache следующие: Apache выполняет ограничения сценария PHP. Добавьте эти правила в файл .htaccess.Как назвать
Копировать код. Код выглядит следующим образом:
RewriteEngine on RewriteCond % !^$
RewriteRule uploads/(.).(php)$ – [F]
RewriteRule data/(.
).(php)$ – [F]
RewriteRule templets/(.*).(php)$ –[F]

Чтобы запустить PHP как модуль Apache, вы можете добавить следующий код в файл конфигурации vhosts:

Запретить каталогу загрузки выполнять разрешения файла php

php_flag engine off Order allow,deny Deny from all
Содержимое правил среды nginx следующее: nginx выполняет ограничения сценария PHP.

Одним из недостатков LNMP является то, что права доступа к каталогам не так хороши, как у Apache. Иногда программы веб-сайтов имеют уязвимости загрузки или уязвимости, подобные pathinfo, которые приводят к загрузке троянских коней PHP, что создает большую опасность для веб-сайта и сервера. Рекомендуется удалить разрешение PHP для каталога веб-сайта. При доступе к файлу php в каталоге загрузки будет возвращена ошибка 403.

Сначала отредактируйте конфигурацию виртуального хоста nginx и добавьте следующий контент перед оператором местоположения fastcgi:
Скопируйте код. Код выглядит следующим образом:
location ~ /(data|uploads|templets)/.*.(php|php5)?$ deny all;
>

Ниже приводится дополнение:

Следующие конфигурации добавляются на сервере, настроенном nginx

Скопируйте код. Код выглядит следующим образом:
location ~ /attachments/.*.(php|php5)?$ deny all;
>

Запретить выполнение разрешений файла PHP в каталоге вложений

Скопируйте код. Код выглядит следующим образом:
location ~ /(attachments|upload)/.*.(php|php5)?$ deny all;
>

Запретить выполнение разрешений файла PHP во вложениях и каталогах загрузки

После настройки перезагрузите nginx.

Источник

Читайте также:  Email subject or title
Оцените статью