Skip to main content

Настройка nginx

Роль Nginx в решении для провайдеров состоит в следующем:

  • отделение запросов к API от запросов к странице блокировки
  • проксирование этих запросов на соответствующие веб-приложения
  • ограничение доступа к API

Для корректного разделения запросов необходимо прописать доменное имя, используемое для управления фильтрацией через API, в директиву server_name в файле /etc/nginx/sites-available/isp-go-api, вместо значения api.ispgo, которое там прописано по умолчанию. Все остальные запросы пойдут на виртуальный хост, настроенный в файле /etc/nginx/sites-available/isp-go-blocked, за счет наличия там модификатора default_server в директиве listen. Допускается создавать другие виртуальные хосты, со следующими оговорками:

  • в каждом виртуальном хосте должно быть прописано имя сервера с помощью директивы server_name;
  • не допускается использование модификатора default_server;
  • не рекомендуется использование протокола https - в этом случае, вместо сброса соединения, у пользователей, обращающихся к запрещенным сайтам по https, будет появляться предупреждение о невалидном сертификате, и неизбежно возникнут (необоснованные) обвинения от пользователей в перехвате защищенного траффика.

Для корректного проксирования необходимо, чтобы адреса и порты, упоминаемые в директиве proxy_pass в файлах /etc/nginx/sites-available/isp-go-api и /etc/nginx/sites-available/isp-go-blocked, соответствовали адресам и портам, которые прослушиваются соответствующими веб-приложениями. По умолчанию это так. См. ключи listen в секциях [blockpage] и [api] в файле /etc/isp-go/config.ini.

Доступ к API ограничивается с помощью директив allow и deny. Директивы обрабатываются по очереди сверху вниз до первого соответствия. Конфигурация по умолчанию разрешает доступ только с адреса 127.0.0.1. Следует разрешить доступ с сервера, на котором установлена биллинговая система. Ни в коем случае нельзя разрешать доступ к API с недоверенных (в том числе пользовательских) систем, т.к. при наличии доступа к API злоумышленник может изменять любые настройки фильтрации у любых пользователей.

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

service nginx reload

Более подробную информацию о настройке nginx можно найти на странице проекта: *http://nginx.org/ru/docs/*