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

Материал из Slipenko.Wiki
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 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
 
=== Управление службой ===
 


== Установка caddy в ОС Альт ==
==== С использованием Systemd ====
<syntaxhighlight>
# apt-get install caddy
</syntaxhighlight>


== Управление службой ==
Пакет caddy в ОС Альт предоставляет две systemd службы: caddy и caddy-api.
Пакет caddy в ОС Альт предоставляет две systemd службы: caddy и caddy-api.


Строка 22: Строка 28:
Управление данными службами возможно через стандартные команды systemctl.
Управление данными службами возможно через стандартные команды systemctl.


Например, чтобы добавить caddy в автозагрузку и запустить прямо сейчас можно воспользоваться данной командой:<syntaxhighlight lang="text">
Например, чтобы добавить caddy в автозагрузку и запустить прямо сейчас можно воспользоваться данной командой:
# systemctl enable --now caddy
# systemctl enable --now caddy
</syntaxhighlight>Также возможно использование caddy без systemd. 


Для запуска сервера воспользуйтесь командой caddy run. Для запуска с стандартной конфигурацией, предоставляемой пакетом caddy добавьте --сonfig /etc/caddy/Caddyfile <syntaxhighlight lang="text">
==== Без использования systemd ====
# caddy run --config /etc/caddy/Caddyfile
</syntaxhighlight>Данная команда запустит сервер в текущем терминале. Если необходимо запустить в фоне, можно воспользоваться командой `caddy start`.


Для выключения сервера воспользуйтесь командой caddy stop.
Также возможно использование caddy без systemd.  


По остальным командам можно почитать в справке, доступной с помощью команд: caddy help и caddy help [command] а также в [https://caddyserver.com/docs/command-line официальной документации] .
Для запуска сервера воспользуйтесь командой <code>caddy run</code>. Для запуска с стандартной конфигурацией, предоставляемой пакетом caddy добавьте <code>--сonfig /etc/caddy/Caddyfile</code>:  
# caddy run --config /etc/caddy/Caddyfile
Данная команда запустит сервер в текущем терминале. Если необходимо запустить в фоне, можно воспользоваться командой <code>caddy start</code>.


==Настройка caddy==
Для выключения сервера воспользуйтесь командой <code>caddy stop</code>.
В ОС Альт конфигурация caddy расположена в /etc/caddy/Caddyfile.  


По умолчанию главный файл конфигурации содержит строку import Caddyfile.d/*.caddyfile. Эта строка указывает на то, что Caddy импортирует все файлы с расширением .caddyfile из директории /etc/caddy/Caddyfile.d/. Данная функциональность позволяет разделять конфигурации на отдельные файлы и упрощает организацию и поддержку конфигурации сервера.
По остальным командам можно почитать в:
* <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).
 
==== Адаптер конфигов ====


===Reverse proxy===
=== Решение типовых проблем ===
<syntaxhighlight lang="text">
example.com {
reverse_proxy localhost:5000
}
</syntaxhighlight>TODO<syntaxhighlight lang="text">
example.com {
root * /var/www
reverse_proxy /api/* localhost:5000
file_server
}
</syntaxhighlight>TODO


===Редирект с www. субдомена===
=== Дополнительно ===
<syntaxhighlight lang="text">
example.com {
redir https://www.{host}{uri}
}


www.example.com {
* [https://github.com/caddyserver/caddy Страница проекта на GitHub]
}
* '''TODO'''
</syntaxhighlight>TODO<syntaxhighlight lang="text">
www.example.com {
redir https://{labels.1}.{labels.0}{uri}
}


example.com {
=== Список использованных источников ===
}
</syntaxhighlight>


===Адаптер конфигов===
* [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

В ОС Альт конфигурация 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).

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

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

Дополнительно

Список использованных источников