У меня проблема с моей настройкой NGINX с перенаправлением на пользовательскую страницу ошибки в другом месте (включая css, изображения, js), если должна быть выброшена страница ошибки.
Сначала я хотел бы заблокировать доступ к папке (например, .git
). Это можно легко сделать через (внутри блока сервера)
расположение ~ /(.git) {
отрицать все;
вернуть 404;
}
Затем я создал настраиваемый элемент error_page (внутри блока сервера) с настраиваемым файлом 404.html в месте, отличном от корневого каталога веб-сайта.
страница_ошибки 404 /404.html;
местоположение = /404.html {
корень /var/data/websites/error-page;
внутренний;
}
После этих изменений будет отображаться моя пользовательская страница 404, но без css, js и изображений.
Если я просматриваю веб-сайт, причина проста: путь к файлам неверен - они основаны на местоположении (в моем примере .git
).
https://it.dmetzler1988.io/.git/css/main.css сеть::ERR_ABORTED 404
.
Вот полный файл конфигурации NGINX для этой страницы (удалены только пути сертификатов ssl):
сервер {
слушать 443 ssl;
слушать [::]:443 ssl http2;
ssl_certificate <путь>;
ssl_certificate_key <путь>;
имя_сервера it.dmetzler1988.io;
корень /var/data/websites/dmetzler1988.io/it.dmetzler1988.io;
индекс index.html index.php;
страница_ошибки 404 /404.html;
местоположение = /404.html {
корень /var/data/websites/error-page;
внутренний;
}
расположение ~ /(.git) {
отрицать все;
вернуть 404;
}
}
Итак, мои вопросы по этому месту:
- Как я могу исправить проблему с неправильным путем (удалить
.git
с пути)?
- Это правильный способ для такого варианта использования или есть лучшее решение?