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

valet nginx-forum на nginx.us
Ср Ноя 9 13:23:29 UTC 2011


Спасибо, так работает. Видимо не
работало из-за того, что у меня в  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;

    gzip_static on;

if ($http_user_agent ~ ZmEu) {
return 503;
}

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

root   /var/www/site.ru;

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

location ^~ /uploads/ {
	access_log off;
	expires max;
}

location ~* \.tpl$ {
   deny all;
}

    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;
    }

## Disable viewing .htaccess & .htpassword
    location ~ /\.ht {
        deny  all;
    }

}

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

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

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

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,218046,218085#msg-218085



Подробная информация о списке рассылки nginx-ru