Caddy: различия между версиями
Maks1mS (обсуждение | вклад) Нет описания правки |
Maks1mS (обсуждение | вклад) Нет описания правки Метка: визуальный редактор отключён |
||
Строка 1: | Строка 1: | ||
== Что такое caddy? == | == Web-сервер caddy == | ||
=== Что такое caddy? === | |||
Caddy — это веб-сервер с открытым исходным кодом с автоматическим HTTPS из коробки. | Caddy — это веб-сервер с открытым исходным кодом с автоматическим HTTPS из коробки. | ||
Среди основных особенностей можно выделить: | Среди основных особенностей можно выделить: | ||
* Простота настройки | * Простота настройки; | ||
* Автоматическое обновление сертификатов TLS | * Автоматическое обновление сертификатов TLS; | ||
* Поддержка мультиядерности/мультипроцессорности | * Поддержка мультиядерности/мультипроцессорности; | ||
* Поддержка HTTP/1.1, HTTP/2, и HTTP/3 по умолчанию | * Поддержка HTTP/1.1, HTTP/2, и HTTP/3 по умолчанию; | ||
* Возможность изменения конфигурации через API | * Возможность изменения конфигурации через API. | ||
=== Установка caddy в ОС Альт === | |||
# apt-get update && apt-get install caddy | |||
=== Управление службой === | |||
== | ==== С использованием Systemd ==== | ||
Пакет caddy в ОС Альт предоставляет две systemd службы: caddy и caddy-api. | Пакет caddy в ОС Альт предоставляет две systemd службы: caddy и caddy-api. | ||
Строка 22: | Строка 28: | ||
Управление данными службами возможно через стандартные команды systemctl. | Управление данными службами возможно через стандартные команды systemctl. | ||
Например, чтобы добавить caddy в автозагрузку и запустить прямо сейчас можно воспользоваться данной командой: | Например, чтобы добавить caddy в автозагрузку и запустить прямо сейчас можно воспользоваться данной командой: | ||
# systemctl enable --now caddy | # systemctl enable --now caddy | ||
==== Без использования systemd ==== | |||
Также возможно использование caddy без systemd. | |||
Для запуска сервера воспользуйтесь командой <code>caddy run</code>. Для запуска с стандартной конфигурацией, предоставляемой пакетом caddy добавьте <code>--сonfig /etc/caddy/Caddyfile</code>: | |||
# caddy run --config /etc/caddy/Caddyfile | |||
Данная команда запустит сервер в текущем терминале. Если необходимо запустить в фоне, можно воспользоваться командой <code>caddy start</code>. | |||
Для выключения сервера воспользуйтесь командой <code>caddy stop</code>. | |||
По | По остальным командам можно почитать в: | ||
* <code>caddy help</code> и <code>caddy help [command]</code> | |||
* [https://caddyserver.com/docs/command-line официальной документации] . | |||
=== | === Настройка caddy === | ||
Пример конфигурации: | В ОС Альт конфигурация caddy расположена в <code>/etc/caddy/Caddyfile</code>. | ||
По умолчанию главный файл конфигурации содержит строку <code>import Caddyfile.d/*.caddyfile</code>. Эта строка указывает на то, что caddy импортирует все файлы с расширением .caddyfile из директории /etc/caddy/Caddyfile.d/. Данная функциональность позволяет разделять конфигурации на отдельные файлы и упрощает организацию и поддержку конфигурации сервера. | |||
==== Статический файловый сервер ==== | |||
Для создания статического файлового сервера необходимо использовать директиву [https://caddyserver.com/docs/caddyfile/directives/file_server file_server]. | |||
Пример минимальной конфигурации: | |||
example.com { | example.com { | ||
Строка 70: | Строка 84: | ||
} | } | ||
Данная конфигурация скрывает файл /var/www/html/file | Данная конфигурация скрывает файл /var/www/html/file. | ||
==== Reverse proxy ==== | |||
Для создания обратного прокси-сервера (reverse proxy) необходимо использовать директиву [https://caddyserver.com/docs/caddyfile/directives/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 используется директива [https://caddyserver.com/docs/caddyfile/directives/redir redir]. | |||
Пример конфигурации для редиректа с www. субдомена: | |||
www.example.com { | |||
redir <nowiki>https://example.com{uri}</nowiki> | |||
} | |||
example.com { | |||
} | |||
Если необходимо сделать редирект для нескольких доменов, то можно воспользоваться переменными <code>{labels.*}</code>: | |||
www.example-one.com, www.example-two.com { | |||
redir <nowiki>https://{labels.1}.{labels.0}{uri}</nowiki> | |||
} | |||
example-one.com, example-two.com { | |||
} | |||
Массив labels хранит части имени хоста, индексируемые с 0 с права (0=com, 1=example-one, 2=www). | |||
==== Адаптер конфигов ==== | |||
=== | === Решение типовых проблем === | ||
=== | === Дополнительно === | ||
* [https://github.com/caddyserver/caddy Страница проекта на GitHub] | |||
* '''TODO''' | |||
=== Список использованных источников === | |||
* [https://caddyserver.com/docs/ Официальная документация Caddy]; | |||
* [https://wiki.archlinux.org/title/Caddy Викистраница Caddy на wiki.archlinux.org]; | |||
* [https://www.digitalocean.com/community/tutorials/how-to-host-a-website-with-caddy-on-ubuntu-18-04-ru#3-caddy Хостинг веб-сайта с Caddy в Ubuntu 18.04 (Digitalocean Tutorials)]. | |||
* '''TODO''' |
Версия от 11:13, 23 июня 2023
Web-сервер caddy
Что такое caddy?
Caddy — это веб-сервер с открытым исходным кодом с автоматическим HTTPS из коробки.
Среди основных особенностей можно выделить:
- Простота настройки;
- Автоматическое обновление сертификатов TLS;
- Поддержка мультиядерности/мультипроцессорности;
- Поддержка HTTP/1.1, HTTP/2, и HTTP/3 по умолчанию;
- Возможность изменения конфигурации через API.
Установка caddy в ОС Альт
# 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
Без использования 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).