Быстрый старт обратного прокси
Это руководство покажет вам, как быстро настроить готовый к работе обратный прокси-сервер с или без HTTPS.
Предварительные условия:
- Базовые навыки работы с терминалом/командной строкой
-
caddyв вашей PATH - Запущенный бэкенд-процесс для проксирования
Это руководство предполагает, что у вас запущен HTTP-сервис бэкенда по адресу 127.0.0.1:9000. Эти команды предназначены для Linux, но те же принципы применимы и к другим операционным системам.
Вы можете настроить простой обратный прокси без файла конфигурации или использовать файл конфигурации для большей гибкости и контроля.
Командная строка
Для запуска текстового HTTP-прокси с порта 2080 на порт 9000 на вашем компьютере:
caddy reverse-proxy --from :2080 --to :9000 Затем попробуйте его:
curl -v 127.0.0.1:2080 Команда reverse-proxy предназначена для быстрой и лёгкой настройки обратных прокси. (Вы можете использовать её в рабочей среде, если ваши требования просты.)
Файл Caddyfile
В текущем рабочем каталоге создайте файл, названный Caddyfile с этим содержимым:
:2080reverse_proxy :9000
Этот файл конфигурации примерно эквивалентен команде caddy reverse-proxy выше.
Затем, в том же каталоге, запустите:
caddy run Затем попробуйте свой прокси:
curl -v 127.0.0.1:2080 Если вы измените файл Caddyfile, убедитесь, что вы перезагрузили Caddy.
Это был простой пример. Вы можете сделать гораздо больше с помощью reverse_proxy директивы.
HTTPS от клиента к прокси
Caddy будет предоставлять ваш прокси через HTTPS автоматически и по умолчанию, если ему известен хост (доменное имя). Команда caddy reverse-proxy по умолчанию будет localhost, если вы опустите флаг --from, или вы можете заменить первую строку вашего файла Caddyfile именем домена прокси.
- Если вы используете
localhostили любой домен, заканчивающийся на.localhost, Caddy будет использовать автоматически возобновляемый самозаверенный сертификат. В первый раз, когда вы это сделаете, вам может потребоваться ввести пароль, так как Caddy пытается установить корневой сертификат своего CA в вашу базу доверенных сертификатов. - Если вы используете любое другое доменное имя, Caddy попытается получить общедоступный доверенный сертификат; убедитесь, что ваши записи DNS указывают на вашу машину и что порты 80 и 443 открыты для публичного доступа и направлены на Caddy.
Если вы не укажете порт, Caddy по умолчанию использует порт 443 для HTTPS. В этом случае вам также потребуется разрешение на привязку к низким портам. Вот несколько способов сделать это в Linux:
- Запустить от имени root (например,
sudo -E). - Или запустить
sudo setcap cap_net_bind_service=+ep $(which caddy), чтобы предоставить Caddy эту конкретную возможность.
Вот самая базовая команда caddy reverse-proxy, которая предоставит вам HTTPS:
caddy reverse-proxy --to :9000 Затем попробуйте его:
curl -v https://localhost Вы можете настроить имя хоста, используя флаг --from:
caddy reverse-proxy --from example.com --to :9000 Если у вас нет разрешения на привязку к низким портам, вы можете проксировать с более высокого порта:
caddy reverse-proxy --from example.com:8443 --to :9000 Если вы используете файл Caddyfile, просто измените первую строку на имя вашего домена, например:
example.comreverse_proxy :9000
HTTPS от прокси к бэкенду
Caddy также может проксировать с использованием HTTPS между собой и бэкендом, если бэкенд поддерживает TLS. Просто используйте https:// в адресе вашего бэкенда:
caddy reverse-proxy --from :2080 --to https://localhost:9000 Это требует, чтобы сертификат бэкенда был доверен системой, на которой работает Caddy. (Caddy не доверяет самозаверенным сертификатам, если не настроен явно.)
Конечно, вы также можете использовать HTTPS с обеих сторон:
caddy reverse-proxy --from example.com --to https://example.com:9000 Это обеспечивает HTTPS от клиента к прокси и от прокси к бэкенду.
Если имя хоста, к которому вы проксируете, отличается от имени хоста, с которого вы проксируете, вам необходимо использовать флаг --change-host-header:
caddy reverse-proxy \
--from example.com \
--to https://localhost:9000 \
--change-host-header По умолчанию Caddy пропускает все HTTP-заголовки без изменений, включая Host, и Caddy вычисляет TLS ServerName из заголовка Host. Флаг --change-host-header сбрасывает заголовок Host на значение бэкенда, чтобы TLS-рукопожатие могло успешно завершиться. В примере выше он был бы изменён с example.com на localhost:9000 (и localhost использовался бы в TLS-рукопожатии).
© 2015-2025 Matthew Holt and The Caddy Authors
Licensed under the Apache License 2.0.
Caddy is a registered trademark of Stack Holdings GmbH.
https://caddyserver.com/docs/quick-starts/reverse-proxy