Caddy — отличный веб-сервер. Его проще настроить, чем nginx, и он обрабатывает запросы и обновления SSL-сертификатов, поэтому вам не нужно возиться с certbot/cron. Иногда вы можете предпочесть использовать Caddy вместо Nginx, Apache, Lighttpd или других веб-серверов.
FreeBSD и Caddy очень хорошо работают вместе для статических веб-сайтов/обратных прокси-серверов, но нам часто приходится обслуживать динамические веб-сайты. Чтобы добавить PHP, выполните следующие действия.
Сначала установите и активируйте Caddy, выполнив следующие команды:
# pkg install caddy
# service caddy enable
Теперь давайте установим PHP — скажем, PHP 8.1 — и активируем php-fpm:
# pkg install php81
# service php-fpm enable
Чтобы использовать php-fpm, измените файл конфигурации в /usr/local/etc/php-fpm.d/www.conf, изменив адрес прослушивания.
Изменяем строку:
listen = 127.0.0.1:9000
на новое значение:
listen = /var/run/php81.sock
Затем измените владельца сокета. Просто раскомментируйте следующие строки:
listen.owner = www
listen.group = www
listen.mode = 0660
Запускаем php-fpm:
service php-fpm start
Теперь измените /usr/local/etc/caddy/Caddyfile. Добавьте что-то вроде этого:
my.website.com {
root * /usr/local/www/website
php_fastcgi unix//var/run/php81.sock
file_server
}
Это настроит виртуальный хост с именем my.website.com (и Caddy попытается получить для него сертификат) с его корнем в /usr/local/www/website и будет обрабатывать любой запрос к файлам .php через сокет php. Директива file_server гарантирует, что статические файлы могут обслуживаться из корневого пути.
Запускаем Caddy:
service caddy start
Вот и всё. Хотя это простая конфигурация, её можно настроить для более продвинутого использования. Например, вы можете добавить следующие строки, чтобы ограничить доступ к определённым файлам:
@disallowed {
path /xmlrpc.php
path *.sql
path /wp-content/uploads/*.php
}
rewrite @disallowed '/index.php'
и вы можете иметь рабочую (и вполне безопасную) установку Wordpress.
Перевод. Автор оригинала: Stefano Marinelli.