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