标签: haproxy

为什么haproxy path_beg只有在我不访问默认站点时才有效?

我已将haproxy配置为将路径"/ rawman"重定向到我的服务器上的端口8080.它第一次工作,但是一旦我访问默认站点,它就会停止工作.默认站点在带有mod_rewrite的apache上运行,并且它正在捕获无效请求(使用codeigniter),因此当我访问http://mysite.com/rawman?foo=bar时,我没有看到重定向的站点,而是看到了默认站点.

This is my haproxy config:

    global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        maxconn 4096
        user haproxy
        group haproxy
        daemon
defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        option redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000

frontend http_proxy
        bind 0.0.0.0:8090
        acl is_ast path_beg /rawman
        use_backend ast if is_ast
        default_backend mysite

backend ast
        server ast 0.0.0.0:8080

backend mysite
        server local 0.0.0.0:80
Run Code Online (Sandbox Code Playgroud)

apache haproxy

6
推荐指数
1
解决办法
5784
查看次数

通过多个前端部分减少 haproxy acl 中的重复

我使用 haproxy 和 stunnel 处理 SSL(并使用代理模式来保留 haproxy 的原始 IP)。

我有几个 acl 测试,根据域、标头或路径重定向到不同的后端。

问题是,无论您是通过 http 还是 https 进入,这些都是相同的,但我必须在配置中复制它们。有什么办法可以减少重复吗?

这是一个示例配置:

global
    user haproxy
    group haproxy
    #etc...

frontend http-in
    bind *:80

    acl files_path path_beg /files/
    acl beta_host hdr_beg(host) -i beta.

    use_backend files if files_path
    use backend beta_host
    default_backend appservers

frontend https-in
    bind *:442 accept-proxy

    acl files_path path_beg /files/
    acl beta_host hdr_beg(host) -i beta.

    use_backend files if files_path
    use backend beta_host
    default_backend appservers


backend appservers
    balance roundrobin
    option forwardfor

    server appserver_1 localhost:8080 weight 1 …
Run Code Online (Sandbox Code Playgroud)

haproxy stunnel

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

Haproxy健康检查许可被拒绝

我无法添加后端服务器,因为运行状况检查失败并显示日志消息

服务器mule/muleapp的运行状况检查失败,原因:Layer4连接问题,信息:"常规套接字错误(权限被拒绝)",检查持续时间:0ms,状态:0/2 DOWN.

然而,我能够远程登录到相同的IP和主机.并添加其他后端工作.我没看到什么是权限问题.我的配置非常简单

backend mule
    balance     roundrobin
    server      muleapp x.x.x.x:64006 check
Run Code Online (Sandbox Code Playgroud)

(用任意数字代替x).我在HTTP模式下运行.应该注意,连接到本地TCPMon端口也不起作用 - 但是没有运行状况检查日志语句.

linux haproxy

6
推荐指数
2
解决办法
4853
查看次数

如何在默认 Dockerfile 上重新加载 haproxy.cfg?

我使用https://github.com/dockerfile/haproxy中的默认 HAProxy Docker 映像

不幸的是我无法让它正确地重新加载我的配置。

如果我跑

$ sudo docker exec haprox haproxy -f /etc/haproxy/haproxy.cfg -p '$(</var/run/haproxy.pid)' -st '$(</var/run/haproxy.pid)'
Run Code Online (Sandbox Code Playgroud)

它只是转储帮助文件。如果我跑

$ sudo docker exec haprox 'haproxy -f /etc/haproxy/haproxy.cfg -p $(</var/run/haproxy.pid) -st $(</var/run/haproxy.pid)'
Run Code Online (Sandbox Code Playgroud)

我明白了

2014/12/30 00:03:23 docker-exec: failed to exec: exec: "haproxy -f /etc/haproxy/haproxy.cfg -p $(</var/run/haproxy.pid) -st $(</var/run/haproxy.pid)": stat haproxy -f /etc/haproxy/haproxy.cfg -p $(</var/run/haproxy.pid) -st $(</var/run/haproxy.pid): no such file or directory
Run Code Online (Sandbox Code Playgroud)

嘘。这些都不是我想要的。我可以运行docker exec haprox service haproxy reload- 但这最终会产生几个 haproxy 进程,因此当我通过 unix 套接字连接时,我从中获得一组信息,show stat但从 http 统计页面获得一组完全不同的信息。 …

haproxy docker

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

使用HAProxy和Keepalived与仅使用Keepalived的优势

根据(详细)主题,使用Keepalived&HAProxy作为HA网络服务器loadbalancer与纯粹的keepalived解决方案相比,有什么优势吗?

load-balancing high-availability keep-alive haproxy

6
推荐指数
1
解决办法
2958
查看次数

haproxy中"session"的确切含义是什么?

当我打开我的http代理服务器的haproxy统计报告页面时,我看到如下内容:

Cum. connections:   280073
Cum. sessions   :   3802
Cum. HTTP requests: 24245
Run Code Online (Sandbox Code Playgroud)

我没有在配置中使用'appsession'和任何其他与cookie相关的命令.那么'会话'在这里意味着什么?

我想haproxy通过这个顺序识别http会话:

  1. 如果配置中存在cookie或查询字符串,请使用它.
  2. 使用SSL/TLS会话.
  3. 使用IP地址和TCP连接状态.

我对吗?

session haproxy

6
推荐指数
2
解决办法
5699
查看次数

haproxy 在日志文件 (-1) 中显示为状态代码

我的 haproxy 日志文件中有一个奇怪的状态代码(请注意,它不是自定义的日志格式,它是 log-http 中的默认格式)

43.56.77.23:55309 [27/Oct/2015:20:14:34.749] front-http mybackend/app 349/0/-1/-1/359 **-1** 0 - - CC-- 1658/1658/21/21/0 0/0 "GET /img/button_bkg.png HTTP/1.1"
Run Code Online (Sandbox Code Playgroud)

-1 状态码是什么意思,我试图在网上找到解决方案,但不幸的是我找不到任何与我的问题相似的东西。

有谁知道这个状态码是什么意思?

haproxy

6
推荐指数
1
解决办法
2139
查看次数

如何在 HAProxy 中设置动态变量?

是否可以设置一个动态变量来保存 HTTP 标头的内容(例如 Host/X-Forwarded-Host)并稍后在 ACL 中使用?

frontend web1
  # ...
  set-var s1(Host)
  acl site1 hdr_end(host) -i %[s1]
  # ...
  use_backend %[s1] if site1
Run Code Online (Sandbox Code Playgroud)

linux haproxy

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

具有持久 TCP 连接的 HAProxy 中的 TCP 负载平衡

目前,我有一个客户端(组件)与服务器(另一个组件)有一个持久的 TCP 连接,并且消息是异步交换的。我想要一个负载均衡器(最好是 HAProxy),其中连接 b/w 客户端和负载均衡器以及 b/w 负载均衡器和多个服务器作为持久的 TCP 连接。

我知道可以轻松地为 TCP 负载平衡设置 HAProxy,但我想知道它是否支持开箱即用的持久连接。如果有人指出我正确的方向,那将会有很大帮助。谢谢。

tcp load-balancing haproxy persistent-connection

6
推荐指数
1
解决办法
6592
查看次数

证书管理器 letencrypt 订单待处理

我的 Letencrypt 订单一直待处理。我在我的单节点 kubernetes 平面上使用 cert-manager。我也在使用letsencrypt。

kind: Certificate
metadata:
  name: example-zone
  namespace: default
spec:
  secretName: example-zone-tls
  renewBefore: 360h # 15d
  commonName: example.zone
  dnsNames:
    - example.zone
  issuerRef:
    name: letsencrypt-prod
    kind: ClusterIssuer
Run Code Online (Sandbox Code Playgroud)

输出:

pascal$ kubectl get cert,order
NAME                                          READY   SECRET             AGE
certificate.certmanager.k8s.io/example-zone   False   example-zone-tls   79m

NAME                                               STATE     AGE
order.certmanager.k8s.io/example-zone-2971070786   pending   77m
Run Code Online (Sandbox Code Playgroud)

收到的事件:

Events:
  Type     Reason            Age   From          Message
  ----     ------            ----  ----          -------
  Warning  NoMatchingSolver  15s   cert-manager  Failed to create challenge for domain "example.zone": no configured challenge solvers can be used for …
Run Code Online (Sandbox Code Playgroud)

haproxy kubernetes lets-encrypt cert-manager

6
推荐指数
1
解决办法
3813
查看次数