Настройка обратного проксирования к Nginx на основе ruby-приложения
Установка Ruby для работы приложения
Для решения проблем с безопастностью и для спокойной установки зависимостей рекомендуется устанавливать Ruby посредством внешних инструментов. Т.е. ставить вне системы управления пакетами Debian.
Какие инструменты есть?
- rvm Ruby version manager - полнофункциональный инструмент, который написан на 20000+ строчках Bash. http://rvm.io/
- rbenv https://github.com/rbenv/rbenv
- ruby-install / chruby
Возьмём ruby-install/chruby как самые простые инструменты для задачи.
Они также написаны на Bash.
https://github.com/postmodern/ruby-install
Надо поставить build-essential
и выполнить установку согласно документации:
wget -O ruby-install-0.7.0.tar.gz https://github.com/postmodern/ruby-install/archive/v0.7.0.tar.gz tar -xzvf ruby-install-0.7.0.tar.gz cd ruby-install-0.7.0/ sudo make install
Затем необходимо получить поддерживаемые версии интерпретаторов:
ruby-install -L
Затем начать установку нужного нам интерпретатора:
ruby-install ruby 2.6.5
В дополнение к ruby-install можно воспользоваться инструментом chruby
. Его задача изменять переменные окружения так, чтобы активной становилась та или иная версия интерпретатора.
https://github.com/postmodern/chruby
Для установки воспользуемся официальным руководством
Install
wget -O chruby-0.3.9.tar.gz https://github.com/postmodern/chruby/archive/v0.3.9.tar.gz tar -xzvf chruby-0.3.9.tar.gz cd chruby-0.3.9/ sudo make install
Однако после выполнения sudo make install
надо ещё правильно активировать данную утилиту внутри командного интерфейса. Для этих целей в файл ~/.bashrc
необходимо добавить следующие строки:
source /usr/local/share/chruby/chruby.sh source /usr/local/share/chruby/auto.sh
Если же вы используете zsh, то надо их добавить в ~/.zshrc
.
После исправления .bashrc необходимо перезапустить bash-сессию.
Куда ставится Ruby?
По умолчанию при вызове от обычного пользователя ruby-install
установит интерпретатор в каталог ~/.rubies
. Это поведение можно изменить, у ruby-install есть соответствующие опции.
Помимо этого в домашнем каталоге пользователя появится подкаталог src
. В нём находятся архивы и распакованные исходные коды интерпретатора Ruby.
Как выбрать нужную версию?
chruby без аргументов выводит список установленных интерпретаторов
chruby 2.6 - выберет последнюю версию интерпретатора ruby из ветки 2.6
chruby system - выберет системную версию интерпретатора (или отключит текущую, если системной версии нет).
Настройка и запуск приложения
Сначала надо добиться того, чтобы ваше приложение запускалось.
Для большинства случаев достаточно установить необходимые джемы, создать базу данных и настроить доступ к ней.
В конфигурации Sinatra отключите раздачу статического контента:
configure do set :static, false end
Настройка реверсивного proxy в Nginx
Для настройки прокси следуйте руководству:
source /usr/local/share/chruby/auto.sh
https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/
https://mattbrictson.com/nginx-reverse-proxy-cache
- Поставить nginx
- Скопировать default-конфигурацию
- Добавить в конфигурацию местоположение динамического сайта
- Установить корнем сайта каталог со статическим содержимым
- Установить местоположение сайта как последний элемент по проверке файлов
server {
listen 80 default_server;
listen [::]:80 default_server;
root /home/user/styled-site/public;
index index.html index.htm index.nginx-debian.html;
server_name _;
location @app {
proxy_pass http://127.0.0.1:4567;
include proxy_params;
}
location / {
try_files $uri $uri.html @app;
}
}