Исходя из опыта работы на местах, я должен подтвердить, что одной из лучших и стабильных комбинаций являются серверы приложений Java + Обратные прокси, хотя некоторые функциональные возможности явно пересекаются, я склонен размещать обратные прокси перед серверами приложений по следующим причинам ( пожалуйста, смотрите страницу NGINX для получения более подробной информации ):
- Балансировка нагрузки: Обратный прокси-сервер действует как регулировщик трафика и может использоваться в качестве шлюза API для кластеризованных экземпляров/резервных служб
- Веб-ускорение: Большинство наших приложений в настоящее время используют фреймворки SPA, поэтому стоит кэшировать все файлы js/css/html и освободить сервер приложений от этой ответственности
- Безопасность: Большинство HTTP-запросов могут быть перехвачены обратным прокси-сервером перед любой попыткой атаковать сервер приложений, увеличивая возможность определения правил
- Управление SSL: Проще устанавливать/управлять/развертывать сертификаты OpenSSL в Apache/NGINX по сравнению с Хранилищами ключей Java . Помимо этого, Давайте зашифруем официально поддержим NGINX с помощью плагинов.
Требования
Чтобы продемонстрировать эту функциональность, в этом руководстве объединен следующий стек классическим (не докерским) способом, однако большинство концепций могут быть полезны для развертывания Docker:
- Пайара 5 в качестве сервера приложений
- NGINX как обратный прокси-сервер
- Давайте зашифруем SSL-сертификаты
Предполагается, что во время этого руководства будет использоваться чистый блок Oracle Linux 7.x (7.6), а тесты будут выполняться через Oracle Cloud с помощью root
user.
Подготовка операционной системы
Поскольку Oracle Linux двоично совместим с RHEL, для получения доступа к Let’s Encrypt будет добавлен репозиторий EPEL . Также полезно обновить операционную систему в качестве предыдущего шага:
yum -y update yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Настройка Payara 5
Для установки сервера приложений Payara потребуется несколько зависимостей, в частности Java Developer Kit. Например, OpenJDK включен в репозитории Oracle Linux.
yum -y install java-1.8.0-openjdk-headless yum -y install wget yum -y install unzip
Как только все зависимости установлены, пришло время загрузить, распаковать и установить Payara. Он будет расположен по адресу /opt
следование стандартным соглашениям Linux для внешних пакетов:
cd /opt wget -O payara-5.191.zip https://search.maven.org/remotecontent?filepath=fish/payara/distributions/payara/5.191/payara-5.191.zip unzip payara-5.191.zip rm payara-5.191.zip
Также полезно создать пользователя payara
для административных целей, для администрирования домена (доменов) или для запуска Payara как службы Linux с systemd:
adduser payara chown -R payara:payara payara5 echo 'export PATH=$PATH:/opt/payara5/glassfish/bin' >> /home/payara/.bashrc chown payara:payara /home/payara/.bashrc
Также необходим системный блок:
echo '[Unit] Description = Payara Server v5 After = syslog.target network.target [Service] User=payara ExecStart = /usr/bin/java -jar /opt/payara5/glassfish/lib/client/appserver-cli.jar start-domain ExecStop = /usr/bin/java -jar /opt/payara5/glassfish/lib/client/appserver-cli.jar stop-domain ExecReload = /usr/bin/java -jar /opt/payara5/glassfish/lib/client/appserver-cli.jar restart-domain Type = forking [Install] WantedBy = multi-user.target' > /etc/systemd/system/payara.service systemctl enable payara
Кроме того, если требуется удаленное администрирование, следует включить функцию безопасного администрирования:
sudo -u payara /opt/payara5/bin/asadmin --host localhost --port 4848 change-admin-password systemctl start payara sudo -u payara /opt/payara5/bin/asadmin --host localhost --port 4848 enable-secure-admin systemctl restart payara
Конфигурация Oracle Cloud по умолчанию создаст виртуальную машину, подключенную к вашему экземпляру, поэтому вам следует проверить правила, чтобы разрешить доступ к портам.
По умолчанию экземпляры Oracle Linux имеют ограниченный набор правил в iptables и SELinux, поэтому порты должны открываться с помощью firewalld, а SELinux должен быть настроен для разрешения обратного прокси-трафика:
firewall-cmd --zone=public --permanent --add-service=http firewall-cmd --zone=public --permanent --add-service=https firewall-cmd --zone=public --permanent --add-port=4848/tcp setsebool -P httpd_can_network_connect 1
При этом гарантируется доступ к порту администратора http+https+payara.
Настройка обратного прокси-сервера NGINX
NGINX доступен в EPEL:
yum -y install nginx systemctl enable nginx
В это время вам понадобится полное доменное имя, указывающее на ваш сервер, в противном случае проверка Let’s encrypt не будет работать. Для этого урока/| ocl.nabenik.com будет использоваться домен. Если ваш домен распространен правильно, вы должны увидеть страницу, подобную этой:
Не волнуйтесь, логотип Fedora связан с использованием EPEL, но вы используете Oracle Linux:).
Теперь пришло время настроить NGINX в качестве обратного прокси-сервера, предпочтительным вариантом развертывания является создание /etc/nginx/sites-available
и /etc/nginx/sites-enabled
структура внутри конфигурации NGINX, чтобы изолировать/управлять несколькими доменами с одним и тем же экземпляром (он же виртуальные хосты).
mkdir -p /etc/nginx/sites-available mkdir -p /etc/nginx/sites-enabled mkdir -p /var/www/ocl.nabenik.com/ chown -R nginx:nginx /var/www/ocl.nabenik.com echo 'server { server_name ocl.nabenik.com; gzip on; gzip_types text/css text/javascript text/plain application/xml; gzip_min_length 1000; location ^~ /.well-known/acme-challenge/ { allow all; root /var/www/ocl.nabenik.com/; default_type "text/plain"; try_files $uri =404; } location / { proxy_pass http://localhost:8080; proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; send_timeout 300; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } listen 80; }' > /etc/nginx/sites-available/ocl.nabenik.com.conf
Чтобы включить новый хост, создается символическая ссылка на сайты с поддержкой
:
ln -s /etc/nginx/sites-available/ocl.nabenik.com.conf /etc/nginx/sites-enabled/ocl.nabenik.com.conf
После этого вы должны включить следующую строку внутри /etc/nginx/nginx.conf
, непосредственно перед завершением файла конфигурации.
include /etc/nginx/sites-enabled/*.conf;
Также полезно проверить вашу конфигурацию с помощью nginx -t
, если все работает, вы должны достичь payara после перезагрузки NGINX.
Настройка Давайте зашифруем
Как только обратный прокси заработает, certbot должно быть достаточно для добавления SSL-сертификата, сам плагин создаст вызов по адресу ^ ~/.хорошо известный/acme-challenge/
, следовательно, исключение прокси является обязательным (как отражено в предыдущем шаге настройки).
yum install -y certbot-nginx certbot --nginx -d ocl.nabenik.com
Одним из предостережений при использовании cert bot является зависимость от версии python. Другой альтернативой, если вы обнаружите какие-либо проблемы, является установка его с помощью pip
yum install -y python-pip pip install certbot-nginx certbot --nginx -d ocl.nabenik.com
Если все работает так, как ожидалось, вы должны увидеть страницу Payara в разделе SSL.
Наконец, и это самое главное, сертификаты Let’s Encrypt действительны только в течение 90 дней, поэтому вы можете добавить обновление сертификации ( crontab -e
) в качестве задачи cron
15 3 * * * /usr/bin/certbot renew --quiet
Оригинал: “https://dev.to/tuxtor/how-to-install-payara-5-with-nginx-and-let-s-encrypt-over-oracle-linux-7-x-34ke”