标签: haproxy

HAProxy 中 URL 的 Reg Exp

我正在尝试为 haproxy 构建一个 reg exp,它将匹配第二个 URL 并将其定向到与第一个不同的 acl:

mysite.com/path/
mysite.com/path/something_random
Run Code Online (Sandbox Code Playgroud)

问题是我的第一个 reg exp 匹配上面的两个 url,而它应该只匹配第二个。我也找不到关于 haproxy regex 格式的更多文档,所以我什至不确定在哪里引用我应该用于匹配的 reg exp 格式。reg exp pro 可以帮助我吗 我是新手,谢谢。

 acl filebrowser_route path_reg ^/path/.*
 acl filebrowser url_beg /path
Run Code Online (Sandbox Code Playgroud)

url routing regex haproxy

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

当 SSL 终止并转发时,HAProxy SSL 轮循机制不起作用

我使用以下配置来终止 SSL,以便我可以检查请求、进行 URL 重写、ACL 等,然后将 SSL 流量转发回我的后端服务器。但是,我无法坚持工作。当我只使用“模式 tcp”并执行直接的 tcp 路由时,我可以粘着工作,但是一旦我开始在前端终止 SSL,粘性就会停止工作。

这是我的配置:

frontend https-forward
  bind *:443 ssl crt /etc/haproxy/certs.d/combo.pem

  option http-server-close
  option forwardfor
  reqadd X-Forwarded-Proto:\ https
  reqadd X-Forwarded-Port:\ 443

  capture request header Referrer len 64
  capture request header Content-Length len 10
  capture request header User-Agent len 64

  # set HTTP Strict Transport Security (HTST) header
  rspadd  Strict-Transport-Security:\ max-age=15768000

  # some ACLs and URL rewrites...

  default_backend backstuff

backend backstuff

  log 127.0.0.1 local2 notice

  balance roundrobin
  option ssl-hello-chk
  stick-table type binary len …
Run Code Online (Sandbox Code Playgroud)

haproxy

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

对具有分布式流量的多个 Apache 服务器使用 Lets Encrypt SSL

我在为在两个不同服务器上设置的几个网站设置 Let's Encrypt 时遇到一些问题,并通过 HAProxy 将流量分配给它们。

服务器上有许多 VHosts/域,所有这些都需要 SSL 证书。为了这篇文章,让我们说他们是:

  1. foo.some-site.com
  2. bar.some-site.com

这两个 A 记录都设置有两个 IP 地址。我可以通过 nwtools.com 或 nslookup 验证 A 记录foo.some-site.combar.some-site.com解析相同的两个 IP 地址。而且我知道 Let's Encrypt 要求 vhost 使用有效记录,以便它可以进行查找。

我计划在两台服务器上为所有虚拟主机运行 Lets Encrypt 设置,其中一台运行良好,但是当我转到第二台时,出现错误:

[root@server httpd]# /opt/letsencrypt/letsencrypt-auto --apache -d foo.some-site.com
Checking for new version...
Requesting root privileges to run letsencrypt...
   /root/.local/share/letsencrypt/bin/letsencrypt --apache -d foo.some-site.com
Failed authorization procedure. foo.some-site.com (tls-sni-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: Failed to …
Run Code Online (Sandbox Code Playgroud)

centos haproxy apache-2.4 centos7 lets-encrypt

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

NGINX 是否可以像 HAProxy(等)那样检查 TLS 请求以查找 SNI?

似乎在为 HTTPS 连接上的主机名路由配置 HAProxy 时,包含一个tcp-request inspect-delay指令“让 HAProxy 有机会查看连接”至关重要。有没有办法让 NGINX 达到同样的效果,还是我应该开始打包并将我的整个服务器移动到 HAProxy?

(作为参考,这个问题来自我之前在这里表达的误解)

编辑

迈克尔,在评论中:

他似乎想在不实际终止 TLS 连接的情况下从客户端的握手尝试中“嗅探”SNI,以便做出下层连接代理决策,并盲目地将有效负载传送到后续机器以终止 TLS,因为对于出于某种原因,他不希望代理上的 TLS 证书和密钥,或者让代理根本不执行 TLS——只需嗅探 SNI 并使用从其内容派生的规则建立向内 TCP 连接。

理由是我需要后端应用程序中的证书和密钥(有些出于某种原因需要这样做),所以我必须向他们提供这些。必须在代理中设置它们本质上会使维护工作和出错的机会加倍。如果我可以不维护对代理的证书的访问权限,这将使我的架构更容易,并减少出错的机会。

nginx https haproxy tls sni

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

Haproxy http-buffer-request 不起作用

我无法让Haproxys http-buffer-request 选项工作。我正在使用 Haproxy 1.6.5。这是我的配置:

global
  maxconn 20000
  debug

defaults HTTP
  mode  http
  option  http-buffer-request  # buffer the whole request before dispatching it to the backend
  timeout connect  5s
  timeout client  50s
  timeout server  50s

frontend http
  bind 127.0.0.1:8123
  use_backend api.radioadmin_backend if { hdr(host) -i api.radioadmin.local:8123 }
  use_backend radioadmin_backend if { hdr(host) -i radioadmin.local:8123 }

backend api.radioadmin_backend
  mode  http
  server api.radioadmin3000 127.0.0.1:3000 check

backend radioadmin_backend
  mode  http
  server radioadmin3001 127.0.0.1:3001 check
Run Code Online (Sandbox Code Playgroud)

但是,请求不会在 Haproxy 中缓冲,而是直接发送到应用程序:

我正在使用 Unicorn 运行 Ruby …

haproxy

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

会话文件每 2 秒创建一次。在 openshift Laravel PHP nginx haproxy 上运行

服务器启动时访问服务器的原因是什么?

我已经rhc tail在我的应用程序上运行以监控新日志。

这是我的日志 http://laravel.io/bin/Dez4o


当我开始使用应用程序时 rhc app-start

app-root/logs/php-fpm-error.log

[26-Jul-2016 21:53:00] NOTICE: [pool www] 'user' directive is ignored     
when FPM is not running as root
[26-Jul-2016 21:53:00] NOTICE: [pool www] 'group' directive is ignored
when FPM is not running as root
[26-Jul-2016 21:53:00] NOTICE: fpm is running, pid 33590
[26-Jul-2016 21:53:00] NOTICE: ready to handle connections
Run Code Online (Sandbox Code Playgroud)

app-root/logs/haproxy.log

[WARNING] 207/215259 (33493) : config : log format ignored for proxy 'stats' since it has no log address.
[WARNING] 207/215259 (33493) …
Run Code Online (Sandbox Code Playgroud)

php nginx haproxy php-fpm openshift-online-2

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

HAProxy 作为 AWS API Gateway 的反向代理

正如标题所暗示的,我有一个 AWS API Gateway 端点,我想将它放在 HAProxy 后面。

这是我当前的 HAProxy 配置

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

listen  http
        bind 127.0.0.1:8080
        maxconn     18000

        acl api_gateway path_beg /api-gateway
        use_backend api-gateway-backend if api-gateway

backend api-gateway-backend
        http-request set-header Host xxxxx.execute-api.ap-southeast-2.amazonaws.com
        server api-gateway xxxxx.execute-api.ap-southeast-2.amazonaws.com:443
Run Code Online (Sandbox Code Playgroud)

当我点击/api-gatewayHAProxy 上的端点时,我得到400 …

haproxy amazon-web-services amazon-api-gateway

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

HAProxy 需要特定 url 上的客户端证书并将其转发到后端

frontend  front
bind *:80
bind *:443 ssl crt /etc/haproxy/certs/server.pem ca-file /etc/haproxy/certs/id.crt verify required 
option tcplog
mode http    
default_backend app

backend app    
balance roundrobin
cookie SERVERID insert
option ssl-hello-chk
mode http
option httpclose
option forwardfor     
option httpchk get /WebApi/help
server  app1 1.1.1.1:443 check ssl fall 1 rise 3 verify none cookie webA
server  app2 1.1.1.2:443 check ssl fall 1 rise 3 verify none cookie webB
Run Code Online (Sandbox Code Playgroud)

对于某些页面/登录名/身份证,我需要要求客户端证书并将其发送到后端(IIS),后者将使用它进行身份验证,我找不到在某些路径上询问证书的方法,并且证书转发到后端也不起作用,以前config 正在使用“mode tcp”,它将所有内容转发到 IIS 并且它正在工作,但我需要使用“acl”将具有特定路径的请求转发到另一台服务器,但“acl”在 https 中不起作用,因此它应该是 http

certificate https haproxy

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

在 haproxy 中防止 X-Forwarded-For 欺骗

昨天,我们受到了到达我们的网络服务器后端 (apache2) 的 DDoS 攻击。前端由到网络服务器的 haproxy 负载平衡连接组成。在 apache 的 access.log 上,我们看到来自两个 ip 的数千个请求,几个小时后我们意识到那些是假的/欺骗的,而不是实际的 ip。

为澄清起见,我们使用“137.137.136.136”的 ip 进行了“curl GET /”,实际上这就是我们在博客中看到的 ip(假的)

现在,在我们使用 nginx 作为反向代理的另一个集群中,更改/制作 X-Forwarded-For 标头不起作用。意思是,即使您在特定标头中输入随机 ip,nginx 仍会将正确的 ip 传递给后端网络服务器?

这与haproxy有关吗?
任何人都可以确认精心制作的 X-Forwarded-For 标头可以通过 haproxy 吗?
为什么这不会发生在 nginx 中?
你如何防止这种情况?

nginx haproxy x-forwarded-for

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

wp-admin 在 apache 反向代理后面时重定向循环

这是我在服务器故障中的第一篇文章,所以我很抱歉任何失礼:)

问题:当我尝试访问充当 WAF 的 apache 背后的“ http://dummy_server/wp-admin ”时,它陷入无限重定向循环。

HAProxy 和 WAF 的完整配置可以在这里找到https://www.haproxy.com/blog/scalable-waf-protection-with-haproxy-and-apache-with-modsecurity/

对于我可以调查的内容,如果我在对 dummy_server/wp-admin 执行 GET 操作时在关闭 apache VH(即仅使用 HA 代理)的同时访问 dummy_server,则服务器会响应

HTTP/1.1 302 Found
Date: Wed, 20 Feb 2019 19:00:49 GMT
Location: https://dummy_server/wp-login.php?redirect_to=.....
Run Code Online (Sandbox Code Playgroud)

然后浏览器重定向到 dummy_server/wp-login 并等待用户凭据。

尽管如此,如果我在激活 WAF 的情况下对 dummy_server 执行 GET,则Location标头将更改为

Location: https://dummy_server/wp-admin
Run Code Online (Sandbox Code Playgroud)

以及陷入重定向循环的过程。

如果我关闭 WAF 配置(我使用的是 modsecurity),则 apache 仅充当反向代理,但问题仍然存在。

下面是虚拟机配置:

<VirtualHost *:90>
       <IfModule mod_security2.c>
                Include /etc/apache2/owasp-modsecurity-crs/crs-setup.conf
                SecRuleEngine On
                SecRequestBodyAccess On
                SecResponseBodyAccess On
        </IfModule>
        ProxyPreserveHost On
        ProxyRequests Off
        ProxyVia Off
        ProxyPass / http://192.168.57.22:81/
        ProxyPassReverse / …
Run Code Online (Sandbox Code Playgroud)

redirect wordpress haproxy apache-2.4

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