NGINX - Лог ошибок 404

Metal Messiah
На сайте с 01.08.2010
Offline
152
463

Добрый день

Нужна помощь в настройке NGINX.

Файловый хостинг. В структуре папок - хаос.

  • Некоторые типы файлов запрещены для скачивания, выдается 403 и в лог пишется попытка взлома. Работает.
  • Некоторые типы файлов отдаются посетителю, при этом если файл не существует - должен писаться лог (не работает, лог пустой)
  • PHP скрипты и соответствующие ошибки в отдельном логе

Вот конфиг vhost'а, это шаблон от VestaCP, по сути нужно только мысленно представить что вместо %var% какие-то значения.

server {
listen %ip%:%web_port%;
server_name %domain_idn% %alias_idn%;

error_log /var/log/%web_system%/domains/%domain%.error.log error;

location / {
access_log /var/log/%web_system%/domains/%domain%.bytes bytes;
location ~* ^.+\.(cfg|log|tmp)$ {
error_log /var/log/%web_system%/domains/%domain%.error403.log error;
deny all;
}
root %docroot%;
location ~* ^.+\.(jpg|jpeg|gif|png|ico|svg|tga)$ {
access_log /var/log/%web_system%/domains/%domain%.static.log combined;
error_log /var/log/%web_system%/domains/%domain%.error404.log error;
expires max;
try_files $uri @fallback;
}
location ~ [^/]\.php(/|$) {
access_log /var/log/%web_system%/domains/%domain%.log combined;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass %backend_lsnr%;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
}

location @fallback {
access_log /var/log/%web_system%/domains/%domain%.fallback.log combined;
error_log /var/log/%web_system%/domains/%domain%.fallback404.log error;
return 404;
}
}

Изначально было

try_files $uri =404;

Попытался поставить костыль через

try_files $uri @fallback;

но изменений не вижу. Не существующие файлы разрешенных расширений ни в один лог не пишутся. Что здесь не так?

Если в @fallback вместо 404 возвращать 500 - ошибочный запрос сразу появляется в fallback.log (не в fallback404.log). Если возвращать 404 - оба fallback лога пустые, при том что и так и так файл не существует и он должен был попадать на @fallback обработчик.

===

Не актуально. Решил проблему сменой error_document 404 на @fallback и логгированием там в access_log. Костыль но работает.

anonymous, думай что говоришь и не забывай подписать отзыв :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий