Прячем Jekyll за nginx
В предыдущих статьях (1,
2) мы установили Jekyll
локально и настроили его автозапуск в качестве демона. Всё замечательно
работает (по крайней мере, у меня ;)), однако хочется большего: например
не вспоминать всякий раз на каком порту он висит, а просто обращаться к
серверу по имени и чтоб он возвращал нам наш блог. Ну вот как-то так

Давайте сразу договоримся о начальных данных:
- Имеем виртуальную (в моём случае) или отдельную машину (web-server) с установленным на ней Jekyll. В принципе и наличие одной машины подойдёт. Тут важна концепция, а не детали.
- 10 минут свободного времени.
- Желание.
А больше ничего и не потребуется ;).
Начнём.
Установка и настройка
- Устанавливаем nginx.
sudo apt install nginx - Убеждаемся, что
systemdмодульnginx.serviceсуществует и активированsudo systemctl enable nginx.service sudo service nginx restart - Создаём конфиг для нашего сервера
sudo nano /etc/nginx/sites-available/web-serverс содержимым
server { listen 80; server_name web-server; location / { proxy_pass http://localhost:4000/; } } - Добавляем наш вновь созданный сервер в группу активных серверов
sudo ln -s /etc/nginx/sites-enabled/web-server /etc/nginx/sites-available/web-serverи перезапускаем
nginxsudo service nginx restart - Необходимо модифицировать наш
jekyll.service, чтоб он отдавал контент только локально (а не каждому проходимцу).- Открываем модуль
sudo nano /lib/systemd/system/jekyll.service - Убираем параметр
--host 0.0.0.0 - Перезагружаем
systemdsudo systemctl daemon-reload - Перезапускаем
Jekyllsudo service jekyll restart
- Открываем модуль
Как проверить, что всё работает
Проверить всё можно довольно просто: откройте браузер и перейдите по ссылке http://web-server. Если всё настроено верно, то откроется ваш блог/сайт. А если не открылся то вот пара возможных причин:
- Ваша клиентская машина не может найти серверную.
Убедиться в этом можно пропинговав сервер с клиента
по имени
ping web-serverДля пущей уверенности стоит убедиться, что по IP сервер всё же доступен
ping <ip сервера>Починить эту проблему можно достаточно просто: внесите IP адрес и имя сервера в клиентский
/etc/hosts nginxнастроен неверно. Например файл конфигурации с ошибками или просто забыли добавить свой конфиг в активные сервера и перезагрузитьnginx
Ну а если всё правильно и всё-равно не работает, то тут может быть всё, что угодно. Пишите, будем разбираться.