Необходимые требования
Чтобы всё получилось нам понадобится:
- Сервер с Root доступом. Рекомендую вот этот
- Установленный Docker + Docker-Compose
- 10 - 15 минут времени
Подготовка
Как и в предыдущих статьях про докер контейнеры мы будем придерживаться правила - хранить все контейнеры в одном месте. Создаём директорию под хост Nginx
Сделаем нашего пользователя (не root !) владельцем этой директории
Конфигурация и запуск
Перейдём в директорию, которую мы создавали выше
Создадим фаил docker-compose.yml
И заполняем его таким таким содержанием.
Если Вы хотите поднять статику Nginx не светя порты наружу, прочитайте про проксирование приложения в NPM через хостнейм. После усвоения материала используйте этот фаил docker-dompose. В противном случае используйте первый вариант, изначально пост писался именно под него!
После этого стартуем наш контейнер
Уделите внимание параметру ports внутри docker-compose.yml Сначала идёт тот порт который мы выставляем наружу на хостовой машине и после двоеточия порт внутри контейнера.
Во время запуска будет создано 2 папки, а именно log и data. Названия говорят сами за себя.
Посмотрим что у нас там поднялось
Если вы ничего не меняли в фаиле docker-compose.yml то порт будет 39080. Открываем в браузере
И видим там вот что
Ошибка? Не спешим расстраиваться. Контейнер мы подняли, а внутрь ничего не положили - вот он и ругается что нечего показывать!
Сначала поправим права, потому что запустив контейнер от sudo он создал папки с у которых владелец root. Исправляем
А ошибку можно исправить просто создав index.html внутри папки data
Я же предпочитаю в фаиле index.html ставить такую заглушку в виде статичного и адаптивного html фаила который проигрывает видео с youtube когда мы к нему обращаемся. Если вы хотите использовать другое видео - просто замените его на нужный id видео на youtube. В html коде он идёт в ссылке после .../embed/...
Эстеты ещё могут загрузить фаил favicon.ico
Лепим контейнер на свой домен/поддомен
Для полного комплекта остаётся только прилепить это всё к домену или поддомену. Самый простой вариант как это сделать был разобран в предыдущем посте Nginx Proxy Manager в Docker контейнере.
Автоматический редирект на страницу 404, если запрошенная страница не существует
Я столкнулся с этой проблемой при обновлении старого сайта - некоторых страниц на сайте уже нет, а пользователи продолжают ходить по старым ссылкам из поисковой выдачи. По большому счёту это всё нужно разруливать 301 редиректом в NPM или в обычном nginx, но на первое время этот вариант может быть полезен. То есть поставить абсолютно на все несуществующие страницы редирект на страницу 404.html
Всё достаточно просто и сводится к 1 действию, просто раскомментировать строку в конфиге NGINX. А для этого понадобится зайти внутрь контейнера
Далее необходимо отредактировать фаил с дефолтным сайтом NGINX. Но есть одна проблема, в данном контейнере по дефолту у нас нету никакого редактора - установим его:
Теперь отредактируем сам фаил
Всё что необходимо сделать это убрать комментарий перед строчкой #error_page просто удалив символ #. Должно получиться вот так:
Вот и всё. А теперь выходим из контейнера
и перезагружаем его
Теперь со всех несуществующих страниц будет происходить редирект на 404.html
Ну всё, все молодцы кто до сюда дочитал
Отправить комментарий