Гид по технологиям

Установка GlassFish с Nginx как обратный прокси на Ubuntu 22.04

• 5 min read • DevOps • Обновлено 28 Nov 2025
Установка GlassFish с Nginx на Ubuntu 22.04
Установка GlassFish с Nginx на Ubuntu 22.04

Схема установки GlassFish и Nginx

GlassFish — бесплатный сервер приложений с открытым исходным кодом для развёртывания Java-приложений. Он подходит для корпоративных приложений и поддерживает масштабирование. Проект инициирован Sun Microsystems и сейчас поддерживается в сообществе Eclipse/EE4J; лицензии — CDDL и GPL.

Что потребуется

  • Сервер с Ubuntu 22.04.
  • Домен, указывающий на IP сервера.
  • Доступ root или пользователь с sudo.

Короткое пояснение терминов

  • GlassFish — сервер приложений Java EE/ Jakarta EE.
  • Nginx — веб‑сервер и обратный прокси.
  • secure‑admin — режим GlassFish, требующий HTTPS/аутентификации для административных операций.

Установка Java JDK

GlassFish работает на Java, поэтому установите JDK:

apt-get install default-jdk unzip -y

Проверьте версию Java:

java --version

Ожидаемый вывод похож на:

openjdk 11.0.15 2022-04-19
OpenJDK Runtime Environment (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1)
OpenJDK 64-Bit Server VM (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1, mixed mode, sharing)

Скачивание GlassFish

Загрузите GlassFish с официальной страницы. Пример команды:

wget https://download.eclipse.org/ee4j/glassfish/glassfish-6.1.0.zip

Распакуйте архив в /opt:

unzip glassfish-6.1.0.zip -d /opt/

Создание systemd‑сервиса для GlassFish

Создайте файл сервиса:

nano /usr/lib/systemd/system/glassfish.service

Вставьте содержимое точно как ниже:

[Unit]
Description = GlassFish Server v6.1.0
After = syslog.target network.target

[Service]
User = root
ExecStart = /usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar start-domain
ExecStop = /usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar stop-domain
ExecReload = /usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar restart-domain
Type = forking

[Install]
WantedBy = multi-user.target

Сохраните файл и перезагрузите демон systemd:

systemctl daemon-reload

Запустите и включите автозапуск:

systemctl start glassfish
systemctl enable glassfish

Проверьте статус:

systemctl status glassfish

Пример рабочего вывода показывает, что домен domain1 поднят, основной PID — java и в логах указан порт администратора 4848.

Установка пароля администратора и включение secure admin

По умолчанию у администратора GlassFish нет пароля. Установите пароль:

/opt/glassfish6/bin/asadmin --port 4848 change-admin-password

При запросе укажите имя пользователя admin, при появлении запроса на текущий пароль нажмите Enter (если его нет), затем задайте новый пароль и подтвердите.

Затем включите безопасный режим администратора:

/opt/glassfish6/bin/asadmin --port 4848 enable-secure-admin

Введите имя и пароль администратора. Команда сообщит, что нужно перезапустить серверы для применения изменений.

Перезапустите сервис:

systemctl restart glassfish

Важно: secure‑admin делает административные операции доступными только по защищённому каналу. Без настройки HTTPS и корректного брандмауэра риск открытого доступа уменьшается, но лучше настроить TLS и ограничить доступ по IP.

Настройка Nginx как обратного прокси для GlassFish

Установите Nginx:

apt-get install nginx -y

Создайте файл виртуального хоста:

nano /etc/nginx/conf.d/glassfish.conf

Добавьте конфигурацию:

upstream glassfish {
  server 127.0.0.1:8080 weight=100 max_fails=5 fail_timeout=5;
}

server {
  listen          80;
  server_name     glassfish.example.com;

  location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://glassfish/hello/;
  }
}

Проверьте синтаксис:

nginx -t

Если ошибок нет, перезапустите Nginx:

systemctl restart nginx

Проверьте статус:

systemctl status nginx

Совет: для продакшена используйте HTTPS (Let’s Encrypt) и протягивайте заголовки X‑Forwarded‑Proto, а также корректно настраивайте location и таймауты для больших ответов.

Настройка брандмауэра UFW

Установите UFW и откройте нужные сервисы:

apt install ufw -y

ufw allow 'Nginx Full'
ufw allow OpenSSH
ufw allow 4848/tcp
ufw allow 8080/tcp

ufw enable
ufw status

Пример вывода показывает, что порты 22, 80/443, 8080 и 4848 разрешены для IPv4 и IPv6.

Доступ к веб‑интерфейсу GlassFish

Откройте в браузере:

Главная страница GlassFish

  • Админка: https://<ваш‑сервер‑или-ip>:4848

Страница входа GlassFish

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

Панель управления Eclipse GlassFish

Общая информация о сервере

Список узлов

Развернутые приложения

Когда этот подход не подходит

  • Если нужен контейнерный деплой: рассмотрите Docker/Kubernetes и официальный GlassFish образ.
  • Если требуется высокая доступность и автоматическое масштабирование — используйте кластеризацию и балансировщики уровня L4/L7 вместе с системой оркестрации.
  • Когда нужно минимизировать память и время запуска — рассмотрите лёгкие Java‑сервлет‑контейнеры (Tomcat, Jetty).

Альтернативные подходы

  • Nginx + systemd (текущий): прост и проверен.
  • HAProxy или балансировщик облака вместо Nginx для L4/L7 балансирования и health checks.
  • Запуск в контейнерах Docker с обратным прокси Traefik для автоматической интеграции с Let’s Encrypt.

Чеклист перед продакшеном (роль‑ориентированный)

Администратор ОС:

  • Установлен и зафиксирован пакет JDK.
  • Файлы GlassFish в /opt с правильными правами.
  • systemd сервис настроен и включён.

Системный администратор сети:

  • Настроен и протестирован Nginx reverse proxy.
  • Включён HTTPS и автоматическое обновление сертификатов.
  • UFW настроен и протестирован.

Разработчик/DevOps:

  • Проверены health checks приложения.
  • Настроены логирование и ротация логов (logrotate).
  • Настроена резервная копия конфигураций и дампов доменов.

Метод быстрого восстановления (runbook)

  1. Проверить статус сервиса:
    systemctl status glassfish
  2. Посмотреть последний фрагмент лога:
    tail -n 200 /opt/glassfish6/glassfish/domains/domain1/logs/server.log
  3. Попробовать корректно перезапустить сервис:
    systemctl restart glassfish
  4. Если не стартует — вернуть предыдущую конфигурацию домена из резервной копии и снова перезапустить.

Критерии приёмки

  • GlassFish процесс запущен и в статусе active (running).
  • Публичный URL приложения доступен через Nginx (HTTP 200).
  • Админка доступна по HTTPS:4848 и требует логина.
  • UFW разрешает только перечисленные порты.

Быстрое руководство по отладке (cheat sheet)

  • Nginx ошибки: /var/log/nginx/error.log
  • GlassFish лог: /opt/glassfish6/glassfish/domains/domain1/logs/server.log
  • systemd журналы:
    journalctl -u glassfish -b --no-pager
  • Проверить прослушиваемые порты:
    ss -tunlp | grep java

Примеры конфигураций и подсказки безопасности

  • Ограничьте доступ к порту 4848 по IP сети администрации.
  • Настройте TLS для Nginx и прокидывайте X‑Forwarded‑Proto для корректного определения схемы на приложении.
  • Не запускать GlassFish от root в долгосрочной эксплуатации; создайте отдельного пользователя с минимальными правами.

Факто‑бокс

  • Порты: HTTP 80, HTTPS 443 (через Nginx), GlassFish 8080 (внутренний), админ 4848.
  • Путь установки: /opt/glassfish6.
  • systemd unit: /usr/lib/systemd/system/glassfish.service.

Небольшая схема принятия решения

flowchart TD
  A[Есть требование Java EE] --> B{Нужен ли контейнер?}
  B -- Да --> C[Использовать Docker/K8s + GlassFish образ]
  B -- Нет --> D[Установить GlassFish на хост]
  D --> E{Нужен обратный прокси?}
  E -- Да --> F[Установить Nginx и настроить proxy_pass]
  E -- Нет --> G[Открыть 8080 напрямую и обеспечить безопасность]

Короткий глоссарий

  • domain — логическая среда выполнения в GlassFish.
  • asadmin — утилита командной строки GlassFish для управления сервером.
  • secure‑admin — режим, требующий защищённого доступа к админ‑API.

Заключение

В этой инструкции показано, как быстро развернуть GlassFish 6.1 с обратным прокси Nginx на Ubuntu 22.04, как обеспечить базовую безопасность и какие проверки провести перед продакшеном. Используйте чеклист и runbook для ускорения восстановления. Если нужно, могу помочь адаптировать инструкцию под Docker или добавить автоматический шаг установки Let’s Encrypt.

Important: не оставляйте админский порт 4848 доступным всем; ограничьте доступ и включите HTTPS.

Краткое резюме:

  • Установите JDK и GlassFish в /opt.
  • Создайте systemd unit и включите сервис.
  • Задайте пароль admin и включите secure‑admin.
  • Настройте Nginx как обратный прокси и откройте порты в UFW.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро