Spec-Zone.ru › Caddy

Быстрый старт обратного прокси

Это руководство покажет вам, как быстро настроить готовый к работе обратный прокси-сервер с или без 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API