Перейти к основному содержимому

Интеграция с NGINX

NGINX — это мощный веб-сервер, обеспечивающий высокую производительность и универсальность.

Благодаря интеграции с NGINX мы можем использовать предлагаемые им техники для решения вопросов балансировки, обратного прокси, кеширования, безопасности и других задач.

интеграция-nginx1.png

Установка NGINX​

Установить NGINX очень просто: в любом дистрибутиве Linux NGINX должен быть доступен в пакетах.

В дистрибутивах Ubuntu или Debian:

apt install nginx

В дистрибутивах CentOS, Fedora или RedHat:

yum install nginx

В MacOS X он доступен в brew и macports.

Для Windows можно скачать установщик по адресу: http://nginx.org/en/download.html

Конфигурация​

В этом примере мы предполагаем, что Netuno уже установлен и запущен в /srv/netuno.

Чтобы настроить новый сайт в NGINX, перейдите в папку конфигурации:

  • В дистрибутивах Linux она обычно находится в: /etc/nginx
  • В MacOS X с brew: /usr/local/etc/nginx

Создайте новый файл конфигурации для нового сайта в sites-available/netuno.

И содержимое этого файла будет таким:

server {
listen 127.0.0.1:80;
server_name app.vash-domen.com;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host imya-vashego-prilozheniya-netuno.local.netu.no;
}
location /netuno {
root /srv/netuno/core/web;
}

location /public {
root /srv/netuno/apps/imya-vashego-prilozheniya-netuno;
}
}

Можно изменить строку listen 127.0.0.1:80 на свой внешний IP и соответствующий порт.

А там, где указано imya-vashego-prilozheniya-netuno, должно быть имя вашего приложения, например moeprilozhenie.

Если имя приложения содержит _, как moe_prilozhenie, то это потому, что Netuno не допускает - в именах приложений. Поскольку в доменных адресах _ не поддерживается, его нужно заменить на -, который Netuno автоматически преобразует в _ и находит соответствующее приложение.

.local.netu.no — это сокращение для localhost; альтернативно можно использовать .localhost.

Это потому, что Netuno автоматически ищет приложение с именем, соответствующим поддомену, поэтому очень важно в Host, который приходит в Netuno, указывать в префиксе имя приложения.

В этом примере мы предполагаем, что Netuno работает на порту 9000 и по пути /src/netuno; проверьте эту информацию и при необходимости адаптируйте.

Публичное веб-содержимое Netuno находится в папке core/web, но не всё должно быть доступно извне — только папка netuno.

Таким образом, напрямую доступны только папка core/web/netuno и папка public соответствующего приложения.

Активация конфигурации нового сайта​

Теперь нужно создать символическую ссылку на наш новый файл конфигурации, чтобы активировать новый сайт.

Это потому, что методика настройки сайтов NGINX в Linux основана на хранении файлов конфигурации в папке sites-available, но активные файлы определяются в папке sites-enabled.

Таким образом, создание символической ссылки важно, чтобы избежать дублирования файлов и гарантировать, что любые изменения вносятся в один файл.

В Linux символическая ссылка создаётся так:

ln -s /etc/nginx/sites-available/netuno /etc/nginx/sites-enabled/netuno

Перезагрузка конфигурации NGINX​

Помните, что для вступления этой конфигурации в силу необходимо перезагрузить конфигурацию NGINX.

Перезагрузка:

nginx -s reload

Или перезапустите:

killall nginx
nginx

Или более элегантным способом:

service nginx restart

Или полностью остановите сервер и запустите снова:

service nginx stop
service nginx start

Проверить состояние NGINX можно командой:

service nginx status

Файлы журналов NGINX находятся в папке /var/log/nginx.

Фиктивный локальный адрес​

Netuno определяет, какое приложение обрабатывает запрос (request), на основе префикса адреса, поступающего в Host HTTP-заголовка; при этом префикс должен содержать точное имя приложения Netuno.

Поэтому можно использовать фиктивный адрес только для того, чтобы указать Netuno, что нужно использовать правильное приложение.

У нас есть moe-prilozhenie.local.netu.no, который всегда разрешается в локальный IP.

Приложение в Netuno должно называться moe_prilozhenie, потому что Netuno не допускает - в имени приложений, а так как домен не поддерживает _, его нужно заменить на -, который Netuno автоматически преобразует в _.

В качестве альтернативы можно создать локальный адрес, например moe-prilozhenie.localhost; в этом случае нужно зарегистрировать этот адрес как локальный хост — следует принудительно задать разрешение адреса в файле hosts; в случае Linux отредактируйте файл:

/etc/hosts

И добавьте строку:

127.0.0.1 moe-prilozhenie.localhost

Теперь этот локальный адрес можно использовать в NGINX.

Если вы работаете в локальной среде разработки, достаточно проверить в браузере по адресу:

  • Через NGINX:
http://moe-prilozhenie.localhost
  • Напрямую к Netuno:
http://moe-prilozhenie.localhost:9000

Если вы на сервере или в контейнере через терминал, используйте команду cURL, например:

  • Через NGINX:
curl -v http://moe-prilozhenie.localhost:9000
  • Напрямую к Netuno:
curl -v http://moe-prilozhenie.localhost:9000

Всегда проверяйте, что там, где мы упоминаем moe-prilozhenie, должно быть имя вашего приложения.

В локальной среде разработки, если были внесены какие-либо исправления, особенно в файл hosts операционной системы, может потребоваться перезапустить браузер из-за кеша разрешения DNS.

Если потребуется исправить какую-либо конфигурацию в NGINX, не забывайте всегда перезагружать конфигурацию.