docker - 如何停止 HAProxy 将我的 POST 转换为 GET
问题描述
出于某种原因,haproxy 正在转换我的请求。下面是日志输出。
wc_haproxy | 172.29.0.1:35296 [03/Nov/2021:22:03:44.901] http http/<NOSRV> 0/-1/-1/-1/0 302 134 - - LR-- 1/1/0/0/0 0/0 "POST /register HTTP/1.1"
wc_haproxy | 172.29.0.1:58040 [03/Nov/2021:22:03:44.906] http~ app/app1 0/0/1/0/1 404 130 - - ---- 1/1/0/0/0 0/0 "GET /register HTTP/1.1"
下面是我的配置:
global
log stdout format raw local0
defaults
mode http
timeout client 10s
timeout connect 5s
timeout server 10s
timeout http-request 10s
log global
frontend http
bind *:80
bind *:443 ssl crt /usr/local/etc/haproxy/company.com.pem
redirect scheme https if !{ ssl_fc }
option httplog
acl sub1 hdr_sub(host) -i app.company.com
use_backend app if sub1
use_backend frontstore
backend frontstore
option forwardfor
option httpchk GET /
http-check send ver HTTP/1.1 hdr Host frontstore
server frontstore1 frontstore:8001 check
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
backend app
option forwardfor
option httpchk GET /check
http-check send ver HTTP/1.1 hdr Host app
server app1 app:8002 check
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
有谁知道它为什么会这样做?
仅供参考,如果这有什么不同的话,我正在使用 docker 映像“haproxy:lts-alpine”。
解决方案
由于您的frontend
配置:
frontend http
...
redirect scheme https if !{ ssl_fc }
HAProxy 正在将您的应用程序流量从 HTTP 重定向到 HTTPS。您可以在日志中检查它,因为它返回302
HTTP 状态代码:
wc_haproxy | 172.29.0.1:35296 [03/Nov/2021:22:03:44.901] http http/<NOSRV> 0/-1/-1/-1/0 302 134 - - LR-- 1/1/0/0/0 0/0 "POST /register HTTP/1.1"
请考虑查看HAProxy 相关文档。
POST
302
重定向到GET
转换是一种常见的浏览器模式。请考虑阅读这个 SO question。我认为这可能与您的问题有关。
推荐阅读
- c# - 如何从包含 C# 中特定子字符串的字符串数组返回字符串?
- flash-cs5 - Flash cc5 我想要运行计算器的按钮
- docker - Prometheus alertmanager 使用 docker 持久化存储
- python - 如果值是列表格式的列表,如何从字典中访问各个值?
- python - xpath 选择器返回空值
- node.js - Mongoose:允许用户对每个期刊进行一次评论
- sql - 显示表格和给定日期范围中不存在的记录
- python - 替换列表中的元素是否等同于删除然后插入元素?或者只是访问它们?
- facebook - Facebook Graph API,无法使用应用令牌获取页面令牌
- r - dplyr:根据匹配的行添加数字