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

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
Откройте в браузере:
- Публичный интерфейс приложений: http://glassfish.example.com

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

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




Когда этот подход не подходит
- Если нужен контейнерный деплой: рассмотрите 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)
- Проверить статус сервиса:
systemctl status glassfish - Посмотреть последний фрагмент лога:
tail -n 200 /opt/glassfish6/glassfish/domains/domain1/logs/server.log - Попробовать корректно перезапустить сервис:
systemctl restart glassfish - Если не стартует — вернуть предыдущую конфигурацию домена из резервной копии и снова перезапустить.
Критерии приёмки
- 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.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента