我目前正在尝试构建一个应用程序,该应用程序可以在我的波利波进程。使用 http 一切正常,但当我转到 https 时,haproxy 只显示“400 bad”请求,知道为什么吗?
这是我的设置:
<-> Polipo 1 (http)
Client <----> (https) HAproxy <----> (http) <-> Polipo 2 (http)
<-> Polipo 3 (http)
这是我的 HAproxy 配置:
global
maxconn 4096
daemon
tune.ssl.default-dh-param 2048
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
pidfile <%= pid_file %>
defaults
mode http
maxconn 4096
option httplog
option dontlognull
option forwardfor
option http-server-close
retries 3
timeout connect 5s
timeout client 60s
timeout server 60s
frontend rotating_proxies
bind *:<%= port %> ssl crt /etc/ssl/private/mydomain.pem
reqadd X-Forwarded-Proto:\ https
default_backend polipo
option http_proxy
backend polipo
option http_proxy
http-response replace-value Location ^http://(.*)$ https://\1
redirect scheme https if !{ ssl_fc }
balance leastconn
<% backends.each do |b| %>
server <%= b[:name] %><%= b[:port] %> <%= b[:addr] %>:<%= b[:port] %> check maxconn 4096
<% end %>
我不确定
http-response replace-value Location ^http://(.*)$ https://\1
这到底是什么意思? Polipo 只谈论 http(未加密)。 HAproxy 应该只是进行 SSL 卸载。
答案1
tl;dr:没关系,这是公共 URL,并且删除option http_proxy
。
引用文档:
Location 响应标头指示页面重定向到的 URL。它仅在与 3xx(重定向)或 201(已创建)状态响应一起提供时才有意义。
重定向必须由用户代理执行,因此必须提供访问 HAProxy 时要使用的正确 URL。
来自HAProxy 文档:
选项 http_proxy [...] 在此模式下,不声明任何服务器,连接将转发到“http://”方案后的 URL 中找到的 IP 地址和端口。
这不是您想要的。删除该指令。