You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redmine 5.1.1(Docker)遇Puma::HttpParserError请求格式错误求助

解决Redmine 5.1.1升级后Puma::HttpParserError问题

1. 检查Nginx反向代理配置

  • 确保Nginx与Puma的连接使用纯HTTP协议,proxy_pass指向Puma容器的HTTP端口(默认3000),示例配置:
    location / {
        proxy_pass http://redmine:3000; # 此处必须用HTTP,禁止用HTTPS
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme; # 正确传递HTTPS协议标识给Redmine
    }
    
  • 移除Nginx中所有针对Puma连接的SSL相关指令(如proxy_ssl_verify、proxy_ssl_certificate等),SSL终止逻辑仅由Nginx处理。

2. 修正PHP脚本的API请求目标

  • 确认脚本请求的是Nginx的HTTPS地址(而非直接指向Puma的HTTP端口),例如https://your-redmine-domain/api/v2/issues.json,而非http://puma-ip:3000/...。
  • 检查PHP请求库(如cURL)配置,确保没有强制向HTTP端口发送SSL请求的参数。若使用cURL,无需刻意关闭CURLOPT_SSL_VERIFYPEER(测试环境除外),核心是请求地址必须指向Nginx的HTTPS入口。

3. 确认Redmine容器的Puma配置

  • Docker环境下,官方Redmine 5.x镜像默认Puma不启用SSL,无需额外修改。若自定义了config/puma.rb,需删除或注释所有SSL相关配置:
    # 以下SSL配置需完全注释或删除
    # ssl_certificate '/path/to/cert.pem'
    # ssl_certificate_key '/path/to/key.pem'
    
  • 验证容器端口映射:Docker Compose或run命令中,Puma端口(默认3000)仅以HTTP方式映射,无需配置SSL端口。

4. 验证请求链路

  • 直接测试Puma服务:执行curl http://[容器IP或内部域名]:3000/issues.json(需携带Redmine认证头),确认返回正常JSON数据。
  • 测试Nginx反向代理:执行curl https://your-redmine-domain/issues.json,确认返回结果与直接访问Puma一致。

内容的提问来源于stack exchange,提问作者Pavel Shtanko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 22:07:37