Caddy直接反向代理后端seafile(无需nginx)方法

Caddy配置文件样板如下:

https://$url$:88 {
        tls {
                resolvers 1.0.0.1
                dns namecheap {
                        api_key $apikey$
                        user $username$
                        api_endpoint https://api.namecheap.com/xml.response
                        client_ip $namecheap_whiteip$
                }
        }

        # 先处理 /seafhttp 请求(保留路径前缀)
        handle_path /seafhttp* {
                uri strip_prefix /seafhttp
                reverse_proxy $ip$:8082 {
                        header_up Host {host}
                        flush_interval -1
                        transport http {
                                versions h1.1
                                read_buffer 0
                                read_timeout 36000s
                                write_timeout 36000s
                                dial_timeout 36000s
                        }
                }
        }

        # 其它请求走 8000
        reverse_proxy $ip$:8000 {
                header_up Host {host}
        }
}

如果外网80和443端口可访问,caddy就无需tls配置;如果80和443不可访问,需要通过增加dns api的tls配置块来解决自动申请ssl证书的问题。

本文用的是namecheap的域名,且80和443端口不可访问,因此使用的namecheap的tls配置。如果默认的caddy不支持dns api,可使用xcaddy进行自定义。

备注:caddy的namecheap模块,目前最高支持的caddy版本是v2.9.1。