Caddy配置文件备份

本站前端反响代理从nginx换到了caddy,使用还不是很熟练,这里备份一下配置文件。

# =============================================================================
# QuartLOG —— Caddyfile v2
# 后端:Quart / hypercorn 127.0.0.1:8000;站点根:/opt/blog
# 校验:caddy validate --adapter caddyfile --config caddy.conf
# 格式化:caddy fmt --overwrite caddy.conf
# 启动:./caddy start --adapter caddyfile --config caddy.conf
# 停止:./caddy stop
# 重启:./caddy reload --adapter caddyfile --config caddy.conf
# =============================================================================

# 裸域 → www(301 永久跳转)。
# Caddy 默认自动把 HTTP 308 跳转到 HTTPS,无需像 nginx 那样单独写 80 端口站点。
#quartlog.com {
#    redir https://www.quartlog.com{uri} permanent
#}

www.quartlog.com {
    # —— 证书策略二选一 ——
    # 方式 A(推荐):留空,Caddy 通过 ACME 自动签发证书并自动续期。
    # 前提:DNS 已解析到本机、80/443 对外开放(80 用于 HTTP-01 挑战)。
    #
    # 方式 B:沿用现有证书,则取消下一行注释;裸域站点块同样需要 tls 指向该证书:
    tls /opt/caddy/keys/www.quartlog.com.pem /opt/caddy/keys/www.quartlog.com.key

    # 压缩:仅 gzip level 5(对齐原 nginx gzip_comp_level 5)
    # encode {
    #     gzip 5
    # }
    # 需要 zstd 时改成下面这段(zstd 优先于 gzip 协商):
    encode {
        zstd better
        gzip 6
    }

    # 请求体上限 6MB:对齐后端文章图 5MB,给 multipart 封装留余量;超限返回 413
    request_body {
        max_size 6MB
    }

    root * /opt/blog

    # 安全响应头:站点级增量下发,静态与后端响应都会带上
    header {
        Strict-Transport-Security "max-age=31536000; includeSubDomains"
        X-Content-Type-Options "nosniff"
        X-Frame-Options "SAMEORIGIN"
        Referrer-Policy "strict-origin-when-cross-origin"
        Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=()"
        Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; font-src 'self'; connect-src 'self'; frame-src 'none'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'"
        # Caddy 默认只回 Server: Caddy(不含版本号);如需彻底删除该头可取消下一行注释
        -Server
    }

    # 访问日志:JSON 结构化,按大小滚动;静态资源跳过记录
    log {
        output file /opt/caddy/logs/access.log {
            roll_size 100mb
            roll_keep 5
        }
        format json
    }
    @static path /static/* /favicon.ico /robots.txt /sitemap.xml
    log_skip @static

    # 拦截隐藏文件与后端不对外目录,返回 404
    @hidden path /.git/** /.hg/** /.svn/** /.env* /.idea/** /.vscode/** /instance/** /tools/** /logs/** /__pycache__/** /requirements/**
    handle @hidden {
        respond 404
    }

    # robots.txt / sitemap.xml 直出,1 天缓存
    @rootfile path /robots.txt /sitemap.xml
    handle @rootfile {
        header Cache-Control "public, max-age=86400"
        file_server
    }

    # favicon.ico 直出,30 天缓存
    handle /favicon.ico {
        root * /opt/blog/static
        header Cache-Control "public, max-age=2592000"
        file_server
    }

    # /static/* 直出,7 天缓存
    handle /static/* {
        header Cache-Control "public, max-age=604800"
        file_server
    }

    # 其余请求反代到 Quart / hypercorn
    # Caddy 自动维护上游连接池;X-Forwarded-For / X-Forwarded-Proto / X-Forwarded-Host 自动设置
    handle {
        reverse_proxy 127.0.0.1:8000 {
            transport http {
                dial_timeout 2s
                response_header_timeout 30s
                read_timeout 30s
                write_timeout 15s
                keepalive 2m
            }
        }
    }
}

本文为原创文章,转载请注明出处。

原文链接:http://www.quartlog.com/post/caddy配置文件备份

评论(0)

还没有评论,来抢沙发吧~

验证码