Caddyfile без предупреждений при запуске

Caddy ругался на два места. header_up X-Forwarded-For был лишним: Caddy сам
игнорирует этот заголовок из входящего запроса и подставляет реальный адрес,
защита от подделки обеспечивается его поведением по умолчанию. Пустая строка
перед глобальным блоком делала файл неформатированным по мнению caddy fmt.

Проверено caddy fmt и caddy validate на сгенерированном файле.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Vladimir Bryzgalov
2026-08-16 19:00:49 +05:00
co-authored by Claude Opus 5
parent 7494883309
commit cd02fabb2e
2 changed files with 25 additions and 10 deletions
+7 -6
View File
@@ -22,9 +22,10 @@ CADDY_WAIT_SEC = 3
def render_caddyfile(domains: str, port: int, max_upload_mb: int) -> str:
"""Собирает конфигурацию Caddy из настроек сервиса."""
listed = ", ".join(d.strip() for d in domains.split(",") if d.strip())
# Пустой строки перед блоком быть не должно: caddy fmt считает это
# неформатированным файлом и ругается при каждом запуске.
return f"""{MARK}
# Домены и предел размера берутся из config.toml, менять нужно там.
{{
\t# Caddy очень подробно рассказывает про сертификаты. В консоли из-за этого
\t# не видно сообщений сервиса, поэтому его вывод уходит в файл.
@@ -39,11 +40,11 @@ def render_caddyfile(domains: str, port: int, max_upload_mb: int) -> str:
}}
{listed} {{
\treverse_proxy 127.0.0.1:{port} {{
\t\t# Реальный адрес клиента - иначе список разрешённых адресов
\t\t# увидит вместо него localhost и пустит кого угодно.
\t\theader_up X-Forwarded-For {{remote_host}}
\t}}
\t# X-Forwarded-For здесь намеренно не задаётся: Caddy сам игнорирует этот
\t# заголовок из входящего запроса и подставляет реальный адрес клиента.
\t# Не добавляйте сюда trusted_proxies - тогда Caddy начнёт верить заголовку
\t# от клиента, и любой сможет назваться разрешённым адресом.
\treverse_proxy 127.0.0.1:{port}
\trequest_body {{
\t\tmax_size {max_upload_mb}MB