Настройка сервисов NGINX




Здравствуйте, уважаемые читатели! На микрокомпьютере MB77.07 установлен веб-сервер NGINX, но работает он в простейшей начальной конфигурации. Начальная конфигурация позволяет быстро запустить сайт. Но чтобы повысить безопасность и быстродействие сайта, а также удобство пользования ресурсом, нужно задействовать полезные сервисные возможности NGINX.


Пора улучшить начальную конфигурацию NGINX. Нужно открыть файл из каталога /etc/nginx/sites-enabled и прописать дополнительные настройки в секцию server {}.

Для начала, нужно ораничить доступ к сайту по левым запросам, чтобы ограничить возможности сканирования:

if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}

Потом, нужно запретить доступ к сайту по ip-адресу в обход доменного имени:

if ($host !~ ^(домен.ru)$ ) {
return 403;
}

Для повышения быстродействия сайта на стороне клиента нужно заставить NGINX использовать кэш браузера, чтобы компьютер посетителя не делал лишних запросов на сервер:

expires 168h;
add_header Cache-Control private;

Кроме того, весьма полезно будет запретить NGINX записывать в журнал обращения к файлам изображений:

location ~ \.(jpg|png|ico){
access_log off;
expires max;
}

Далее, при возникновении ошибочных запросов пусть NGINX выдаёт мои страницы ошибок вместо стандартных:

error_page 403 http://mb7707.ru/module/errors/403.html;
error_page 404 /module/errors/404.html;
error_page 451 /module/errors/451.html;
error_page 500 http://mb7707.ru/module/errors/500.html;

Поскольку при генерации ошибок 403 и 500 переходы по внутренним ссылкам становится недоступными, то для их страниц нужно указывать полные адреса!

Для ориентирования в адресной строке браузера расширения файлов и явное указание главной страницы совершенно не обязательно. Лучше скрыть главную страницу и расширения .html и .php страниц сайта. Каюсь, здесь я совсем запутался, большое спасибо Антону Прибора за помощь!

rewrite ^/(.*/)?index.(html|php)$ /$1 permanent;
rewrite ^/(.*)\.(php|html)$ /$1 permanent;
try_files $uri $uri.html $uri/index.html @php;
location @php {
set $fname $document_root$document_uri;
if ($fname ~ /$) {
set $fname "${fname}index";
}
if (!-f $fname.php) {
return 404;
}
include fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $fname.php;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}

Накнец нужно создать чёрный список ip-адресов. В него можно смело добавлять адреса, с которых пытались сканировать сайт в поиске уязвимостей. Например, создать файл, например, noips в каталоге /etc/nginx/conf.d и в нём директивой deny ххх.yyy.zzz.ttt запретить обращение к сайту каждого недружественного ip-адреса xxx.yyy.zzz.ttt.


Всё готово, остаётся сохранить файлы и перезагрузить NGINX:

service nginx restart


Обновлено - 10.12.2018. Описана настройка nginx-light - как предельно облегчённого и необременённого неиспользуемыми функциями.


Благодарю за внимание, доброго здоровья!



Сайт работает на микрокомпьютере