Это старая версия документа!


Nginx Proxy Manager - Скрипт управления

Скрипт для удобного управления nginx-proxy инстансом с Let's Encrypt через интерактивное меню.

Расположение: /opt/nginx/nginx-manager.sh

Контейнеры:

  • nginx_proxy - основной прокси-сервер
  • nginx_letsencrypt - управление SSL сертификатами
# Переходим в директорию nginx-proxy
cd /opt/nginx
 
# Создаем файл скрипта
nano nginx-manager.sh

<note>Скопируйте содержимое скрипта из артефакта выше и вставьте в файл.</note>

# Делаем файл исполняемым  
chmod +x nginx-manager.sh
 
# Создаем символическую ссылку для глобального доступа
sudo ln -sf /opt/nginx/nginx-manager.sh /usr/local/bin/nginx-manager
cd /opt/nginx
./nginx-manager.sh
nginx-manager
Пункт меню Действие Описание
1 Запустить сервисы Выполняет docker-compose up -d
2 Остановить сервисы Выполняет docker-compose stop
3 Перезагрузить сервисы Выполняет docker-compose restart
Пункт меню Действие Описание
4 Логи nginx_proxy Показывает последние 50 строк
5 Логи nginx_letsencrypt Показывает последние 50 строк
6 Real-time nginx_proxy Отслеживание в реальном времени
7 Real-time nginx_letsencrypt Отслеживание в реальном времени
Пункт меню Действие Описание
8 Информация Статистика, порты, полезные команды
0 Выход Завершение работы скрипта
  • Цветовая схема: Зеленый = активен, красный = остановлен
  • Статус в реальном времени: Отображается при каждом открытии меню
  • Обработка ошибок: Уведомления об успешных/неуспешных операциях
  • Навигация: Простые цифровые команды
# Создаем файл сервиса
sudo nano /etc/systemd/system/nginx-proxy.service
[Unit]
Description=Nginx Proxy with Let's Encrypt
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/nginx
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose stop
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target
# Перезагружаем systemd
sudo systemctl daemon-reload
 
# Включаем автозапуск
sudo systemctl enable nginx-proxy.service
 
# Запускаем сервис
sudo systemctl start nginx-proxy.service
 
# Проверяем статус
sudo systemctl status nginx-proxy.service
# Алиасы для nginx-proxy
alias nginx-start='cd /opt/nginx && docker-compose up -d'
alias nginx-stop='cd /opt/nginx && docker-compose stop'
alias nginx-restart='cd /opt/nginx && docker-compose restart'
alias nginx-logs='docker logs nginx_proxy'
alias nginx-logs-ssl='docker logs nginx_letsencrypt'
alias nginx-menu='/opt/nginx/nginx-manager.sh'
source ~/.bashrc
# Все запущенные контейнеры
docker ps
 
# Все контейнеры (включая остановленные)
docker ps -a
 
# Только nginx контейнеры
docker ps --filter "name=nginx"
# Логи nginx-proxy
docker logs nginx_proxy
 
# Логи Let's Encrypt
docker logs nginx_letsencrypt
 
# Логи в реальном времени
docker logs -f nginx_proxy
# Тест nginx конфигурации
docker exec nginx_proxy nginx -t
 
# Перезагрузка nginx без перезапуска контейнера
docker exec nginx_proxy nginx -s reload
 
# Просмотр активной конфигурации
docker exec nginx_proxy cat /etc/nginx/conf.d/default.conf
# Список сертификатов
ls -la /opt/nginx/certs/
 
# Проверка срока действия сертификата
openssl x509 -in /opt/nginx/certs/your-domain.com.crt -text -noout | grep "Not After"
/opt/nginx/
├── docker-compose.yml      # Основная конфигурация
├── nginx-manager.sh        # Скрипт управления
├── certs/                  # SSL сертификаты
├── vhost.d/               # Виртуальные хосты
├── html/                  # Веб-файлы
└── acme/                  # ACME данные

<note warning> Важно: Убедитесь, что скрипт доступен только авторизованным пользователям:

# Ограничение доступа к скрипту
chmod 750 /opt/nginx/nginx-manager.sh
 
# Создание группы для управления nginx
sudo groupadd nginx-admins
sudo usermod -a -G nginx-admins username

</note>

# Добавляем в crontab проверку каждые 5 минут
*/5 * * * * /usr/bin/docker ps | grep nginx_proxy || /opt/nginx/nginx-manager.sh start >/dev/null 2>&1
# Скрипт проверки статуса с уведомлениями
#!/bin/bash
if ! docker ps | grep -q nginx_proxy; then
    echo "Nginx Proxy не запущен!" | mail -s "Nginx Alert" admin@domain.com
fi
# Переходим в директорию
cd /opt/nginx
 
# Останавливаем сервисы
docker-compose stop
 
# Обновляем образы
docker-compose pull
 
# Запускаем с новыми образами
docker-compose up -d
 
# Удаляем старые образы
docker image prune -f

<note important> Всегда создавайте резервные копии перед обновлением:

# Резервная копия конфигураций
tar -czf nginx-backup-$(date +%Y%m%d).tar.gz /opt/nginx/

</note>

  • vm/nginx/04-nginx_menu.1756470666.txt.gz
  • Последнее изменение: 2025/08/29 12:31
  • admin