所以我在Jetty servlets之前使用了HAProxy。 目前的目标只是一切configuration完成后的概念和负载和压力testing的certificate。 不过,我有一个configurationhaproxy的问题。 我知道这不是我的应用程序的问题,因为我有nginx(tengine)运行,一切正常。 所以它必须是haproxyconfiguration的东西,或者只是haproxy的工作方式不适合我的需要。
所以我的客户端试图做的是使用两个不同的连接来连接到haproxy并保持打开状态。 1.以分块stream模式连接上传。 2.以正常模式连接并build立一个下载通道。
以下是我的haproxy.conf文件的外观:
global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon # Default SSL material locations # ca-base /etc/ssl/certs # crt-base /etc/ssl/private # Default ciphers to use on SSL-enabled listening sockets. # For more information, see ciphers(1SSL). ssl-default-bind-ciphers kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4-SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL maxconn 2048 defaults log global mode http option forwardfor option http-server-close option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 errorfile 400 /etc/haproxy/errors/400.http errorfile 403 /etc/haproxy/errors/403.http errorfile 408 /etc/haproxy/errors/408.http errorfile 500 /etc/haproxy/errors/500.http errorfile 502 /etc/haproxy/errors/502.http errorfile 503 /etc/haproxy/errors/503.http errorfile 504 /etc/haproxy/errors/504.http stats enable stats uri /stats stats realm Haproxy\ Statistics stats auth user:password frontend www-http bind *:80 reqadd X-Forwarded-Proto:\ http default_backend www-backend frontend www-https bind *:443 ssl crt /etc/haproxy/server.pem reqadd X-Forwarded-Proto:\ https default_backend www-backend backend www-backend redirect scheme https if !{ ssl_fc } server www-1 localhost:8080 check maxconn 2048
以下是我的日志在尝试访问端口443时所说的内容:
Sep 17 11:10:18 xxxxx-pc haproxy [15993]:127.0.0.1:32875 [17 / Sep / 2014:11:10:18.464] www-https〜www-backend / www-1 0/0 / -1/1 502 212 – – PH_0/0/0/0/0 0/0“GET / test HTTP / 1.1”
任何想法可能是什么问题? configuration问题还是?
谢谢。
PH表示haproxy拒绝来自后端的标题,因为它的格式不正确。 http://www.haproxy.org/download/1.4/doc/configuration.txt
PH – 代理阻止了服务器的响应,因为它是无效的,不完整的,危险的(缓存控制),或者与安全过滤器相匹配。 在任何情况下,都会向客户端发送HTTP 502错误。 导致此错误的一个可能原因是HTTP头名称中包含未经授权的字符的语法无效。 在服务器响应之前,由于语法无效,代理也阻止了来自客户端的分块编码请求。 在这种情况下,HTTP 400错误被发送到客户端并在日志中报告。