Coolify+Caddy代理下Ruby on Rails的CORS问题求助
问题求助:Coolify部署React+Rails应用的CORS及Caddy配置问题
我在Coolify上部署了React前端应用作为客户端,同时部署了搭载PostgreSQL和Redis的Ruby on Rails后端API应用。本地运行正常,但在Coolify的生产与UAT环境中无法正常工作,疑似存在CORS问题。
我尝试调整了CORS配置与Caddyfile代理设置,但始终无法解决,已卡壳一周,恳请技术帮助!
相关截图
- 服务器CORS配置截图
- 客户端Axios请求截图
- 弹窗报错截图
代理日志报错(每5秒出现一次)
2024-11-24T14:00:25.043139001Z {"level":"info","ts":1732456825.0429814,"logger":"docker-proxy","msg":"Process Caddyfile","logs":"[ERROR] Removing invalid block: parsing caddyfile tokens for 'handle_path': path matcher must begin with '/', got http://uat.api.meritbox.me*, at Caddyfile:4\n:// {\n\tencode zstd gzip\n\thandle_path http://uat.api.meritbox.me* {\n\t\treverse_proxy 10.0.3.5\n\t}\n\thandle_path http://www.uat.api.meritbox.me* {\n\t\treverse_proxy 10.0.3.5\n\t}\n\thandle_path https://www.uat.api.meritbox.me* {\n\t\treverse_proxy 10.0.3.5\n\t}\n\theader -Server\n\ttry_files {path} /index.html /index.php\n}\n\n"} 2024-11-24T14:00:30.045719445Z {"level":"info","ts":1732456830.045587,"logger":"docker-proxy","msg":"Process Caddyfile","logs":"[ERROR] Removing invalid block: parsing caddyfile tokens for 'handle_path': path matcher must begin with '/', got http://uat.api.meritbox.me*, at Caddyfile:4\n:// {\n\tencode zstd gzip\n\thandle_path http://uat.api.meritbox.me* {\n\t\treverse_proxy 10.0.3.5\n\t}\n\thandle_path http://www.uat.api.meritbox.me* {\n\t\treverse_proxy 10.0.3.5\n\t}\n\thandle_path https://www.uat.api.meritbox.me* {\n\t\treverse_proxy 10.0.3.5\n\t}\n\theader -Server\n\ttry_files {path} /index.html /index.php\n}\n\n"}
当前调整后的Caddy配置
networks: coolify: external: true services: caddy: container_name: coolify-proxy image: 'lucaslorentz/caddy-docker-proxy:2.8-alpine' restart: unless-stopped extra_hosts: - 'host.docker.internal:host-gateway' environment: - CADDY_DOCKER_POLLING_INTERVAL=5s - CADDY_DOCKER_CADDYFILE_PATH=/dynamic/Caddyfile networks: - coolify ports: - '80:80' - '443:443' - '443:443/udp' labels: - coolify.managed=true - coolify.proxy=true - "caddy= # Production Environment api.meritbox.me { encode zstd gzip handle /* { reverse_proxy 10.0.3.2 { header_up Host {upstream_hostport} header_up X-Real-IP {remote_host} header_up X-Forwarded-For {remote_host} header_up X-Forwarded-Proto {scheme} } } header { Access-Control-Allow-Origin https://meritbox.me Access-Control-Allow-Methods 'GET, POST, PUT, PATCH, DELETE, OPTIONS' Access-Control-Allow-Headers 'Content-Type, Authorization, access-token, expiry, token-type' Access-Control-Allow-Credentials true Access-Control-Expose-Headers 'access-token, expiry, token-type, Authorization' -Server } try_files {path} /index.html /index.php } www.api.meritbox.me { redir https://api.meritbox.me{uri} permanent } # UAT Environment uat.api.meritbox.me { encode zstd gzip handle /* { reverse_proxy 10.0.3.5 { header_up Host {upstream_hostport} header_up X-Real-IP {remote_host} header_up X-Forwarded-For {remote_host} header_up X-Forwarded-Proto {scheme} } } header { Access-Control-Allow-Origin https://uat.meritbox.me Access-Control-Allow-Methods 'GET, POST, PUT, PATCH, DELETE, OPTIONS' Access-Control-Allow-Headers 'Content-Type, Authorization, access-token, expiry, token-type' Access-Control-Allow-Credentials true Access-Control-Expose-Headers 'access-token, expiry, token-type, Authorization' -Server } try_files {path} /index.html /index.php } www.uat.api.meritbox.me { redir https://uat.api.meritbox.me{uri} permanent }" volumes: - '/var/run/docker.sock:/var/run/docker.sock:ro' - '/data/coolify/proxy/caddy/dynamic:/dynamic' - '/data/coolify/proxy/caddy/config:/config' - '/data/coolify/proxy/caddy/data:/data'
内容的提问来源于stack exchange,提问作者Htet Naing
相关产品推荐
相关产品推荐

