docker版Seafile 12 使用公网IP地址的端口映射到内网80端口时,外网打开seafile显示空白页

如果甩开caddy,直接用seafile的80端口,则外网可以正常映射打开seafile登陆界面。
所以为出在caddy上面。查看caddy的日志,如下:
1.从外网访问的日志:
seafile-caddy | {“level”:“debug”,“ts”:1749898529.2425425,“logger”:“admin.api”,“msg”:“received request”,“method”:“GET”,“host”:“localhost:2019”,“uri”:“/metrics”,“remote_ip”:“127.0.0.1”,“remote_port”:“33142”,“headers”:{“Accept”:[“/”],“User-Agent”:[“curl/8.12.1”]}}
seafile-caddy | {“level”:“debug”,“ts”:1749898539.8140004,“logger”:“docker-proxy”,“msg”:“Skipping default Caddyfile because no path is set”}
seafile-caddy | {“level”:“debug”,“ts”:1749898539.814015,“logger”:“docker-proxy”,“msg”:“Skipping swarm config caddyfiles because swarm is not available”}
seafile-caddy | {“level”:“debug”,“ts”:1749898539.8163633,“logger”:“docker-proxy”,“msg”:“Skipping swarm services because swarm is not available”}
seafile-caddy | {“level”:“debug”,“ts”:1749898549.2957854,“logger”:“admin.api”,“msg”:“received request”,“method”:“GET”,“host”:“localhost:2019”,“uri”:“/metrics”,“remote_ip”:“127.0.0.1”,“remote_port”:“45692”,“headers”:{“Accept”:[“/”],“User-Agent”:[“curl/8.12.1”]}}

2.如果内网访问的话,日志如下:
{“level”:“debug”,“ts”:1749900084.509425,“logger”:“http.handlers.reverse_proxy”,“msg”:“upstream roundtrip”,“upstream”:“172.18.0.6:80”,“duration”:0.54562575,“request”:{“remote_ip”:“192.168.10.103”,“remote_port”:“60257”,“client_ip”:“192.168.10.103”,“proto”:“HTTP/1.1”,“method”:“GET”,“host”:“192.168.10.105”,“uri”:“/”,“headers”:{“Purpose”:[“prefetch”],“Accept-Language”:[“zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7”],“X-Forwarded-For”:[“192.168.10.103”],“Accept”:[“text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.7”],“Accept-Encoding”:[“gzip, deflate”],“User-Agent”:[“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36”],“Sec-Purpose”:[“prefetch;prerender”],“Cookie”:[“REDACTED”],“Dnt”:[“1”],“Upgrade-Insecure-Requests”:[“1”],“X-Forwarded-Proto”:[“http”],“X-Forwarded-Host”:[“192.168.10.105”]}},“headers”:{“Server”:[“nginx”],“Date”:[“Sat, 14 Jun 2025 11:21:24 GMT”],“Content-Type”:[“text/html; charset=utf-8”],“Content-Language”:[“zh-cn”],“Access-Control-Allow-Origin”:[““],“Content-Length”:[“0”],“Connection”:[“keep-alive”],“Location”:[”/accounts/login/?next=/“],“Vary”:[“Accept-Language, Cookie”]},“status”:302}
{“level”:“debug”,“ts”:1749900084.5136395,“logger”:“http.handlers.reverse_proxy”,“msg”:“selected upstream”,“dial”:“172.18.0.6:80”,“total_upstreams”:1}
{“level”:“debug”,“ts”:1749900085.330929,“logger”:“http.handlers.reverse_proxy”,“msg”:“upstream roundtrip”,“upstream”:“172.18.0.6:80”,“duration”:0.817232891,“request”:{“remote_ip”:“192.168.10.103”,“remote_port”:“60257”,“client_ip”:“192.168.10.103”,“proto”:“HTTP/1.1”,“method”:“GET”,“host”:“192.168.10.105”,“uri”:”/accounts/login/?next=/",“headers”:{“X-Forwarded-For”:[“192.168.10.103”],“Dnt”:[“1”],“User-Agent”:[“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36”],“X-Forwarded-Proto”:[“http”],“Sec-Purpose”:[“prefetch;prerender”],“Purpose”:[“prefetch”],“Accept”:["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,
/;q=0.8,application/signed-exchange;v=b3;q=0.7"],“Accept-Language”:[“zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7”],“Upgrade-Insecure-Requests”:[“1”],“Accept-Encoding”:[“gzip, deflate”],“Cookie”:[“REDACTED”],“X-Forwarded-Host”:[“192.168.10.105”]}},“headers”:{“Cache-Control”:[“max-age=0, no-cache, no-store, must-revalidate, private”],“Vary”:[“Cookie, Accept-Language”],“Set-Cookie”:[“REDACTED”],“Content-Encoding”:[“gzip”],“Server”:[“nginx”],“Date”:[“Sat, 14 Jun 2025 11:21:25 GMT”],“Content-Type”:[“text/html; charset=utf-8”],“Connection”:[“keep-alive”],“Expires”:[“Sat, 14 Jun 2025 11:21:25 GMT”],“Content-Language”:[“zh-cn”],“Access-Control-Allow-Origin”:["”]},“status”:200}

我知道问题出在caddy上,也不知道如何解决,发论坛求组。也就是说外网访问的话显示为127.0.0.1没有被正确识别外网的地址,或者是内部192.168.10.105

后来绕过caddy,自己部署了nginx,使用https映射到内网http的方式解决。然后要修改.env的文件 输入外网域名和https方式,再把seahub_settings.py文件的服务器地址输入外网域名和端口,就可以实现公网域名到内网的端口映射,并实现支持https协议。