Caddy: различия между версиями
Maks1mS (обсуждение | вклад) Нет описания правки Метка: визуальный редактор отключён |
Maks1mS (обсуждение | вклад) Нет описания правки |
||
Строка 15: | Строка 15: | ||
=== Установка caddy в ОС Альт === | === Установка caddy в ОС Альт === | ||
Предпочтительным способом установки | Предпочтительным способом установки является установка пакета [https://packages.altlinux.org/ru/sisyphus/srpms/caddy/ caddy] из репозитория: | ||
$ su - | $ su - |
Версия от 08:47, 24 июня 2023
Web-сервер caddy
Что такое caddy?
Caddy — это веб-сервер с открытым исходным кодом с автоматическим HTTPS из коробки.
Среди основных особенностей можно выделить:
- Простота настройки;
- Автоматическое обновление сертификатов TLS;
- Поддержка мультиядерности/мультипроцессорности;
- Поддержка HTTP/1.1, HTTP/2, и HTTP/3 по умолчанию;
- Возможность изменения конфигурации через API.
Установка caddy в ОС Альт
Предпочтительным способом установки является установка пакета caddy из репозитория:
$ su - # apt-get update && apt-get install caddy
Управление службой
С использованием systemd
Пакет caddy в ОС Альт предоставляет две systemd службы: caddy и caddy-api.
Служба caddy-api, в отличие от caddy, будет сохранять конфигурацию после перезапуска при ее изменении с помощью API. Если API не будет использоваться, то можно использовать службу caddy.
Управление данными службами возможно через стандартные команды systemctl.
Например, чтобы добавить caddy в автозагрузку и запустить прямо сейчас можно воспользоваться данной командой:
# systemctl enable --now caddy
По умолчанию, логи пишутся в journald. Чтобы их посмотреть можно воспользоваться данной командой:
# journalctl -eu caddy.service
- -e - немедленно перейдите к концу журнал
- -u - показывать логи только выбранного юнита
Без использования systemd
Также возможно использование caddy без systemd.
Для запуска сервера воспользуйтесь командой caddy run
. Для запуска с стандартной конфигурацией, предоставляемой пакетом caddy добавьте --сonfig /etc/caddy/Caddyfile
:
# caddy run --config /etc/caddy/Caddyfile
Данная команда запустит сервер в текущем терминале. Если необходимо запустить в фоне, можно воспользоваться командой caddy start
.
Для выключения сервера воспользуйтесь командой caddy stop
.
По остальным командам можно почитать в:
caddy help
иcaddy help [command]
- официальной документации .
Настройка caddy
В ОС Альт конфигурация caddy расположена в /etc/caddy/Caddyfile
.
По умолчанию главный файл конфигурации содержит строку import Caddyfile.d/*.caddyfile
. Эта строка указывает на то, что caddy импортирует все файлы с расширением .caddyfile из директории /etc/caddy/Caddyfile.d/. Данная функциональность позволяет разделять конфигурации на отдельные файлы и упрощает организацию и поддержку конфигурации сервера.
Статический файловый сервер
Для создания статического файлового сервера необходимо использовать директиву file_server.
Пример минимальной конфигурации:
example.com { root * /var/www/html file_server }
При этом будут обслуживаться все файлы в корневом каталоге. Если не используется index файл, то для просмотра списка файлов потребуется указать file_server browse
.
Если необходимо скрыть какие-то файлы, то можно воспользоваться директивой hide:
example.com { root * /var/www/html file_server { hide .git } }
Данная конфигурация скрывает все папки .git и их содержимое.
Если необходимо скрыть какие-то файлы конкретные файлы, то можно использовать переменную http.vars.root
:
example.com { root * /var/www/html file_server { hide {http.vars.root}/file } }
Данная конфигурация скрывает файл /var/www/html/file.
Reverse proxy
Для создания обратного прокси-сервера (reverse proxy) необходимо использовать директиву reverse_proxy.
Пример минимальной конфигурации:
example.com { reverse_proxy localhost:5000 }
Пример конфигурации, которая проксирует запросы, начинающиеся с /api/, и обеспечивает обслуживание статических файлов:
example.com { root * /var/www/html reverse_proxy /api/* localhost:5000 file_server }
Редирект с www. субдомена
Для редиректа в сервере caddy используется директива redir.
Пример конфигурации для редиректа с www. субдомена:
www.example.com { redir https://example.com{uri} } example.com { }
Если необходимо сделать редирект для нескольких доменов, то можно воспользоваться переменными {labels.*}
:
www.example-one.com, www.example-two.com { redir https://{labels.1}.{labels.0}{uri} } example-one.com, example-two.com { }
Массив labels хранит части имени хоста, индексируемые с 0 с права (0=com, 1=example-one, 2=www).
Адаптер конфигов
Решение типовых проблем
listen tcp 127.0.0.1:2019: bind: address already in use
starting caddy administration endpoint: listen tcp 127.0.0.1:2019: bind: address already in use