标签: haproxy

如何在haproxy中添加uri前缀

我有这样的haproxy配置:

frontend api
    mode http
    default_backend tomcat

backend tomcat
    mode http
    balance roundrobin
    option httpchk HEAD / HTTP/1.0
    server tomcat1 10.0.0.1:1234 weight 1 maxconn 512 check
    server tomcat2 10.0.0.2:1234 weight 1 maxconn 512 check
Run Code Online (Sandbox Code Playgroud)

这可行,但网址必须像:http://api.example.com/project/api/get-something我们想以某种方式设置haproxy以便网址http://api.example.com/api/get-something会得到相同的结果.

我试着添加url前缀:

    server tomcat1 10.0.0.1:1234/project/ weight 1 maxconn 512 check
    server tomcat2 10.0.0.2:1234/project/ weight 1 maxconn 512 check
Run Code Online (Sandbox Code Playgroud)

但它不受支持.有没有办法只使用haproxy才能做到这一点?我不想只为代理tomcat而设置apache.

haproxy

3
推荐指数
1
解决办法
5362
查看次数

具有1.5-dev17的HAproxy SSL Segfault

尝试在1.5-dev17上启用ssl时获取段错误

Ubuntu Server 12.04

尝试使用私钥和CA捆绑连接并用作单个crt几乎可以想到的每个变体,还尝试使用私钥和ca-file作为CA捆绑包拆分crt.

/etc/haproxy/haproxy.cfg

global
   maxconn 4096
   daemon

defaults
   mode   http
   contimeout   5000
   clitimeout   50000
   srvtimeout   50000
   option forwardfor
   retries 3
   option redispatch
   option http-server-close

frontend http
   bind *:80
   reqadd X-Forwarded-Proto:\ http
   default_backend unicorn

frontend https
   bind *:443 ssl crt /path/to/private.key ca-file /path/to/bundle.crt
   reqadd X-Forwarded-Proto:\ https
   default_backend unicorn

backend unicorn
   server unicorn 127.0.0.1:8080 check

listen stats :8081
   mode http
   stats enable
   stats scope unicorn
   stats realm Haproxy\ Statistics
   stats uri /
   stats auth haproxy:YOURPASSWORDHERE
Run Code Online (Sandbox Code Playgroud)

gdb输出

Reading symbols from …
Run Code Online (Sandbox Code Playgroud)

openssl load-balancing haproxy

3
推荐指数
1
解决办法
3218
查看次数

在HAproxy中,我的websocket连接在50秒后关闭.怎么改呢?

我正在使用带有龙卷风的Haproxy作为websocket.如果我直接连接龙卷风我的连接工作正常,但如果我使用HAproxy与下面的配置然后连接50秒后关闭.我的Haproxy配置文件如下.

global
        daemon
        maxconn 4032
        pidfile /var/run/haproxy.pid

    defaults
        mode http
        timeout connect 5000ms
        timeout client 50000ms
        timeout server 50000ms
        option  http-server-close
        maxconn 4032

    frontend http-in
        bind *:80
        acl is_websocket hdr_end(host) -i WebSocket
        use_backend servers if is_websocket
        default_backend servers
        option  redispatch
        option  http-server-close
        maxconn  2000
        contimeout  500000
        clitimeout  500000
        srvtimeout  500000
        contimeout  500000        
        timeout contimeout  500000 
        timeout connect  500000

    backend servers
        server server1 127.0.0.1:8886 maxconn 4032
Run Code Online (Sandbox Code Playgroud)

现在通过使用上面的配置,我的websocket连接在50秒后自动丢失.我想做持久连接,所以有没有办法在HAproxy中建立连接?

tornado haproxy websocket

3
推荐指数
3
解决办法
1万
查看次数

https不是在haproxy背后工作

我必须将haproxy放在我已运行的Apache Web服务器前面.haproxy和apache web-server都在不同的Cent-OS6.4机器上.我已经安装了haproxy-1.5-dev19.el6.x86_64并且它可以正常使用http,但是使用https得到以下错误: - "502 Bad Gateway:服务器返回了无效或不完整的响应".

haproxy日志如下所示:

Nov  7 05:49:56 localhost haproxy[9925]: XX.XX.XXX.XX:51949
[07/Nov/2013:05:49:55.204] https-in~ abc-https/server1
1595/0/1/-1/1597 502 714 - - PHNN 2/2/0/0/0 0/0 "GET / HTTP/1.1"

Nov  7 05:49:57 localhost haproxy[9925]: XX.XX.XXX.XX:51947
[07/Nov/2013:05:49:55.972] https-in~ abc-https/server1
1523/0/1/-1/1525 502 714 - - PHNN 1/1/0/0/0 0/0 "GET /favicon.ico HTTP/1.1"
Run Code Online (Sandbox Code Playgroud)

Web服务器上的SSL日志(代理后面的请求):

10.0.0.218 - - [06/Nov/2013:22:42:34 -0800] **"GET /"** 400 510
10.0.0.218 - - [06/Nov/2013:22:42:34 -0800] "GET /" 400 510
Run Code Online (Sandbox Code Playgroud)

SSL登录Web服务器(直接请求):

XX.XX.XX.XX - - [06/Nov/2013:22:48:42 -0800] **"GET / HTTP/1.1"** 200 19553
Run Code Online (Sandbox Code Playgroud)

您可以在Web服务器上看到代理与无代理之间的区别.

下面是我的haproxy.cfg文件: …

https haproxy

3
推荐指数
1
解决办法
5111
查看次数

HAProxy的热重新配置仍会导致请求失败,有什么建议吗?

我发现当流量很高时,使用这样的命令仍然有失败的请求

haproxy -f /etc/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)
Run Code Online (Sandbox Code Playgroud)

热重新加载更新的配置文件.

以下是使用webbench的压力测试结果:

/usr/local/bin/webbench -c 10 -t 30 targetHProxyIP:1080
Webbench – Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET targetHProxyIP:1080
10 clients, running 30 sec.

Speed=70586 pages/min, 13372974 bytes/sec.
**Requests: 35289 susceed, 4 failed.**
Run Code Online (Sandbox Code Playgroud)

我跑命令

haproxy -f /etc/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)
Run Code Online (Sandbox Code Playgroud)

在压力测试期间多次.

在haproxy文档中,它提到了

他们将收到SIGTTOU 611信号,要求他们暂时停止收听端口,以便新的612进程可以抓住它们

所以有一个时间段旧的进程没有在PORT上监听(比如说80)并且新的进程还没有开始收听PORT(比如80),并且在这个特定的时间段内,它将导致新的进程连接失败,有意义吗?

那么是否有任何方法可以使haproxy的配置重新加载,而不会影响现有连接和新连接?

configuration reload haproxy

3
推荐指数
1
解决办法
4697
查看次数

如何逐个配置haproxy端口范围?

我想使用haproxy部署一个ftp代理服务器.这是场景:

ftp client <---> ftp-proxy-server(ip:10.0.1.1)<---> ftp-server(ip:172.126.1.1)

ftp服务器侦听端口21的控制命令,数据端口范围[20100-20199]

我在ftp-proxy-server上有haproxy配置:

listen ftp-proxy-server 10.0.1.1:21
    mode tcp
    server ftp-server 172.126.1.1:21

listen ftp-proxy-server 10.0.1.1:20100-20199
    mode tcp
    server ftp-server 172.126.1.1:20100-20199
Run Code Online (Sandbox Code Playgroud)

这是问题,我可以从ftp-client成功登录ftp服务,但无法执行输出"连接被拒绝"消息的ls命令.我想原因是从ftp-proxy-server到ftp-server的端口映射是随机的.所以当ftp-client获得一个保留端口(例如20101),但是ftp-proxy-server可能会将它映射到另一个端口(例如20109),这不是分配给ftp-client的端口ftp-server.

我想到一个配置100个侦听的解决方案,一个侦听一个端口,但编写配置文件很复杂.是一个简单的配置选项来逐个映射端口?就像10.0.1.1:20001 - > 172.126.1.1:20001,10.0.1.1:20002 - > 172.126.1.1:20002一样.

欢迎回答:)

ftp networking haproxy

3
推荐指数
1
解决办法
8991
查看次数

HAProxy - 为什么要花时间让客户端请求非常高?

我们在Amazon EC2上设置了haproxy(v 1.5.1),它正在完成两项工作

  1. 根据请求的子域路由流量
  2. SSL终止

我们服务器上的ulimit是128074,并发连接是~3000.

我们的配置文件如下所示.我们面临的问题是haproxy日志中的时间Tq非常高(2-3秒).配置或我们遗漏的东西有什么问题吗?

global
    daemon
    maxconn 64000
    tune.ssl.default-dh-param 2048
    log 127.0.0.1 local0 debug

defaults
    mode http
    option abortonclose
    option forwardfor
    option http-server-close
    option httplog
    timeout connect 9s
    timeout client 60s
    timeout server 30s
    stats enable
    stats uri /stats
    stats realm Haproxy\ Statistics
    stats auth username:nopass

frontend www-http
    bind *:80

    maxconn 64000
    http-request set-header U-Request-Source %[src]
    reqadd X-Forwarded-Proto:\ http

    errorfile 503 /var/www/html/sorry.html

    acl host_A    hdr_dom(host) -f /etc/A.lst
    acl host_B    hdr_dom(host) -f /etc/B.lst
    use_backend www-A         if …
Run Code Online (Sandbox Code Playgroud)

ssl amazon-ec2 haproxy

3
推荐指数
1
解决办法
4791
查看次数

HaProxy透明代理到AWS S3静态网站页面

我正在使用haproxy来平衡一组服务器.我正在尝试向haproxy配置添加维护页面.我相信我可以通过使用'backup'修饰符在后端定义服务器声明来实现此目的.问题是,我如何使用远程托管在AWS S3存储桶(静态网站)上的维护页面,而不实际将用户重定向到该页面(即haproxy服务器'redir'定义).

如果我有服务器:a,b,c.所有服务器都停机进行维护,然后我希望所有请求都由服务器定义d(标有'backup')解析为S3上的静态地址.请注意,我不希望路径继承并在s3上进行评估,它应始终呈现静态维护页面.

amazon-s3 haproxy

3
推荐指数
1
解决办法
2191
查看次数

HAproxy + Lua:如果验证从Lua脚本失败,则返回请求

我们正在尝试使用HAProxy + Lua构建传入请求验证平台.我们的用例是创建一个LUA脚本,它基本上会对Validation API进行套接字调用,并且基于Validation API的响应,我们希望将请求重定向到后端API,如果验证失败,我们希望从LUA脚本返回请求权限.例如,对于200响应,我们希望将请求重定向到后端api,对于404,我们希望返回请求.从文档中,我了解Lua-Haproxy集成有各种默认函数.

core.register_action() --> I'm using this. Take TXN as input
core.register_converters() --> Essentially used for string manipulations.
core.register_fetches() --> Takes TXN as input and returns string; Mainly used for representing dynamic backend profiles in haproxy config
core.register_init() --> Used for initialization
core.register_service() --> You have to return the response mandatorily while using this function, which doesn't satisfy our requirements
core.register_task() -->  For using normal functions. No mandatory input class. TXN is required to fetch header details …
Run Code Online (Sandbox Code Playgroud)

validation lua haproxy

3
推荐指数
1
解决办法
2171
查看次数

如何在Openshift3中禁用粘性会话

如果您在Openshift3中扩展Pod,则来自同一客户端IP地址的所有请求都将发送到与会话关联的容器.

是否有任何配置可以禁用粘性会话?如何在Openshift中管理内部HAProxy的选项?

session containers haproxy openshift docker

3
推荐指数
1
解决办法
2282
查看次数