Odoo 14多站点Caddy配置问题:域名无法正确识别
Odoo多站点Caddy配置问题:所有域名指向同一网站
我在Odoo实例中启用了多站点功能,刚从Nginx切换到Caddy服务器。尝试配置Caddy适配所有域名,但所有域名最终都指向同一个Odoo网站。我已经在Odoo网站配置中设置了对应域名,原Caddyfile配置如下:
domain1.com { redir https://www.domain1.com{uri} } domain2.com { redir https://www.domain2.com{uri} } domain3.com { redir https://www.domain3.com{uri} } www.domain1.com, www.domain2.com, www.domain3.com { reverse_proxy http://127.0.0.1:8069 { header_up X-Forwarded-Proto https header_up X-Forwarded-Host {host} header_up X-Url-Scheme {scheme} header_up X-Real-IP {remote} } encode gzip zstd file_server log }
补充需求
我实际需要把以下Nginx配置语句转换为Caddy可用的配置:
proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr;
解决方案
你的核心问题是缺少X-Forwarded-For头的正确传递,同时部分配置可以优化,以下是适配Odoo多站点的正确Caddy配置:
domain1.com { redir https://www.domain1.com{uri} permanent } domain2.com { redir https://www.domain2.com{uri} permanent } domain3.com { redir https://www.domain3.com{uri} permanent } www.domain1.com, www.domain2.com, www.domain3.com { reverse_proxy http://127.0.0.1:8069 { # 对应Nginx的proxy_set_header X-Forwarded-Host $host; header_up X-Forwarded-Host {host} # 对应Nginx的proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; header_up X-Forwarded-For {remote_host} # 对应Nginx的proxy_set_header X-Forwarded-Proto $scheme; header_up X-Forwarded-Proto {scheme} # 对应Nginx的proxy_set_header X-Real-IP $remote_addr; header_up X-Real-IP {remote} } encode gzip zstd log }
关键说明:
- 去掉了多余的
file_server指令——所有请求都反向代理到Odoo,静态文件由Odoo自行处理,无需Caddy提供文件服务。 - 将
X-Forwarded-Proto的值从硬编码的https改为{scheme},更灵活适配不同协议场景。 - 添加
X-Forwarded-For头并使用{remote_host}变量,Caddy会自动拼接原始客户端IP和中间代理IP,和Nginx的$proxy_add_x_forwarded_for效果一致。 - 重定向规则添加
permanent标记,返回301永久重定向,更符合搜索引擎优化和浏览器缓存逻辑。
配置完成后重启Caddy,Odoo就能通过X-Forwarded-Host识别不同域名,正确路由到对应的站点。确保每个Odoo网站的「域名」字段已经准确设置为对应的www.xxx.com。
内容的提问来源于stack exchange,提问作者unnamed-dev
相关产品推荐
相关产品推荐

