Caddy: различия между версиями
Maks1mS (обсуждение | вклад) |
Maks1mS (обсуждение | вклад) Нет описания правки |
||
Строка 40: | Строка 40: | ||
===Статический файловый сервер=== | ===Статический файловый сервер=== | ||
< | |||
example.com { | Пример конфигурации: | ||
example.com { | |||
} | root * /var/www/html | ||
</ | file_server | ||
} | |||
При этом будут обслуживаться все файлы в корневом каталоге. Если не используется index файл, то для просмотра списка файлов потребуется указать <code>file_server browse</code>. | |||
Если необходимо скрыть какие-то файлы, то можно воспользоваться директивой hide: | |||
example.com { | |||
root * /var/www/html | |||
file_server { | |||
hide .git | |||
} | |||
} | |||
Данная конфигурация скрывает '''все''' папки .git и их содержимое. | |||
Если необходимо скрыть какие-то файлы конкретные файлы, то можно использовать переменную <code>http.vars.root</code>: | |||
example.com { | |||
root * /var/www/html | |||
file_server { | |||
hide {http.vars.root}/file | |||
} | |||
} | |||
Данная конфигурация скрывает файл /var/www/html/file | |||
===Reverse proxy=== | ===Reverse proxy=== |
Версия от 08:17, 21 июня 2023
Что такое caddy?
Caddy — это веб-сервер с открытым исходным кодом с автоматическим HTTPS из коробки.
Среди основных особенностей можно выделить:
- Простота настройки
- Автоматическое обновление сертификатов TLS
- Поддержка мультиядерности/мультипроцессорности
- Поддержка HTTP/1.1, HTTP/2, и HTTP/3 по умолчанию
- Возможность изменения конфигурации через API
Установка caddy в ОС Альт
# apt-get install caddy
Управление службой
Пакет caddy в ОС Альт предоставляет две systemd службы: caddy и caddy-api.
Служба caddy-api, в отличие от caddy, будет сохранять конфигурацию после перезапуска при ее изменении с помощью API. Если API не будет использоваться, то можно использовать службу caddy.
Управление данными службами возможно через стандартные команды systemctl.
Например, чтобы добавить caddy в автозагрузку и запустить прямо сейчас можно воспользоваться данной командой:
# systemctl enable --now caddy
Также возможно использование 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/. Данная функциональность позволяет разделять конфигурации на отдельные файлы и упрощает организацию и поддержку конфигурации сервера.
Статический файловый сервер
Пример конфигурации:
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
example.com {
reverse_proxy localhost:5000
}
TODO
example.com {
root * /var/www
reverse_proxy /api/* localhost:5000
file_server
}
TODO
Редирект с www. субдомена
example.com {
redir https://www.{host}{uri}
}
www.example.com {
}
TODO
www.example.com {
redir https://{labels.1}.{labels.0}{uri}
}
example.com {
}