Интеграция с NGINX
NGINX — это мощный веб-сервер, обеспечивающий высокую производительность и универсальность.
Благодаря интеграции с NGINX мы можем использовать предлагаемые им техники для решения вопросов балансировки, обратного прокси, кеширования, безопасности и других задач.
Установка 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, не забывайте всегда перезагружать конфигурацию.