Caddy: различия между версиями

Материал из Slipenko.Wiki
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 40: Строка 40:


===Статический файловый сервер===
===Статический файловый сервер===
<syntaxhighlight lang="text">
 
example.com {
Пример конфигурации:
    root * /var/www/html
    file_server
example.com {
}
    root * /var/www/html
</syntaxhighlight>TODO
    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 {
}

Адаптер конфигов

Решение типовых проблем