我正在为HttpLogFormat中的String寻找一个正则表达式模式匹配器.该日志由haproxy生成.以下是此格式的示例字符串.
Feb 6 12:14:14 localhost haproxy[14389]: 10.0.1.2:33317 [06/Feb/2009:12:14:14.655] http-in static/srv1 10/0/30/69/109 200 2750 - - ---- 1/1/1/1/0 0/0 {1wt.eu} {} "GET /index.html HTTP/1.1"
Run Code Online (Sandbox Code Playgroud)
HttpLogFormat提供了格式说明.任何帮助表示赞赏.
我试图获得该行中包含的各种信息.以下是字段:
我有一个Sentry应用程序,在url上正确运行:mydomain.com:11011.
我有一个用CDN创建的项目:http:// XXX:YYY@mydomain.com:11011/2
使用此配置,此URL与HAProxy一起提供:
listen sentry *:11011
mode tcp
server app1 localhost:9005 maxconn 32
Run Code Online (Sandbox Code Playgroud)
哨兵的配置:
SENTRY_KEY = 'foo'
SENTRY_PUBLIC = True
SENTRY_URL_PREFIX = 'http://mydomain.com:11011' # No trailing slash!
SENTRY_WEB_HOST = 'localhost'
SENTRY_WEB_PORT = 9005
SENTRY_WEB_OPTIONS = {
'workers': 1, # the number of gunicorn workers
'worker_class': 'gevent',
}
Run Code Online (Sandbox Code Playgroud)
但是当我从同一台服务器上尝试Raven测试时,我的身份验证有问题:
$ raven test http://XXX:YYY@mydomain.com:11011/2
HTTPError: HTTP Error 401: UNAUTHORIZED
Run Code Online (Sandbox Code Playgroud)
也失败了:
$ raven test http://XXX:YYY@localhost:9005/2
HTTPError: HTTP Error 401: UNAUTHORIZED
Run Code Online (Sandbox Code Playgroud)
可能是什么问题呢?谢谢.
这个问题让我感到疯狂,所以也许有人可以帮我理解问题所在.我有一个tomcat web应用程序正面向HAProxy.HAProxy也在进行SSL卸载,并配置为使用粘性会话.我正在使用Tomcat的会话复制功能,这似乎工作正常.会话出现在两个appservers上.
出于某种原因,Tomcat为每个Web请求生成一个新的JSESSIONID,然后将旧会话的内容复制到新会话中.也就是说,我的会话内容仍在新会话中,但会生成新ID并将其发送回客户端.但它只对我的Web应用程序执行此操作.它不会对/ manager应用程序执行此操作.
我已经尝试了本书中的每一个技巧,比如在我的context.xml中设置它:
<Valve className="org.apache.catalina.authenticator.BasicAuthenticator" changeSessionIdOnAuthentication="false" />
Run Code Online (Sandbox Code Playgroud)
并在我的Context元素上设置这些属性:
<Context path="/myapp" reloadable="false" override="true" useNaming="false" allowLinking="true" useHttpOnly="false" sessionCookiePath="/" sessionCookiePathUsesTrailingSlash="false">
Run Code Online (Sandbox Code Playgroud)
而且,结果仍然是一样的.Tomcat为每个请求生成一个新的会话ID,并将旧会话的内容复制到新的id中.
我怀疑它与HAProxy有关,除了/ manager应用程序也在HAProxy后面,它没有表现出这种行为.
为什么Tomcat这样做,我该怎么做才能阻止它呢?
我们使用HAProxy将传入的TCP连接转发到使用原始TCP的单独服务器.我们看到的问题是客户端连接被接受然后关闭而不是立即被拒绝.由于我们已启用运行状况检查,HAProxy是否有任何方法可以从端口解除绑定,以便初始连接失败?
listen custom_forward
mode tcp
bind *:11144
default-server inter 10m fastinter 20s downinter 1m maxconn 100
server custom_server hostname:10144 check
Run Code Online (Sandbox Code Playgroud) HAProxy是一个基于软件的负载均衡器,支持http和tcp分发.如果我使用启用实用组播的ZeroMQ(pgm),那么使用HAProxy作为zmq对等体之间的中介是否与pgm冲突,还是应该使用基于硬件的负载均衡器,如F5?
我正在尝试根据下面 POST 正文中标识的 URL 将以下请求路由到适当的服务器。我希望通过使用 HAProxy 的反向代理来实现这一点。
例如,我想将所有请求定向到 HAProxy,而不是让 HAProxy 检查 POST 正文中是否存在某些值(例如通知 url 值“pingpong”),如果是这种情况,请将流量路由到我将指定的内点在配置中。
POST /someURL/file.jsp HTTP/1.1
Host: 10.43.90.190:80
Content-Type: application/json
Connection: keep-alive
Accept: */*
Content-Length: 256
{"Info": {"groupName":"thisgroup1","Id":"M1234R456","id2":"TUP1234",
"countryCode":"USA","carrierCode":"USAIC","e164Address":"123456768789",
"notificationURL":"http:\/\/www.pingpong.com\/notify",
"timestamp":"2014-03-04T17:33:30.000Z"}}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以使用 acl 来搜索请求正文中的内容“乒乓”,并根据这个值,我会适当地路由它吗?
谢谢!
以下请求经常超时:
<body rid='57993057' xmlns='http://jabber.org/protocol/httpbind' sid='1db840cbfd20e3922f594cc2017421a1858cca7a'><a xmlns='urn:xmpp:sm:3' h='9'/></body>
Run Code Online (Sandbox Code Playgroud)
控制台日志显示:
请求的资源上不存在"Access-Control-Allow-Origin"标头.
我正在使用带有haproxy的ejabberd服务器.
我有一个HAProxy配置为接受*.mysubdomain.com的请求.HAProxy将解析子域(prod或dev来自prod.mysubdomain.com或dev.mysubdomain.com)并转发到正确的后端.存在两个后端,一个用于产品,一个用于开发.每个后端包含两个服务器条目,指向每个子域上的Marathon LB实例.
子域需要JWT cookie才能在后端进行身份验证.我有公钥来检查JWT的有效性,但是希望在HAProxy中这样做.有没有办法添加我自己的代码来执行HAProxy配置中的JWT有效性检查?
HAProxy配置文件如下:
global
maxconn 256
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http-in
bind *:80
mode http
# Returns true when one of the headers contains one of the strings either isolated or delimited by dots. This is used to perform domain name matching.
acl host_dev hdr_dom(host) -i dev
acl host_prod hdr_dom(host) -i prod
acl jwtPresent req.cook(JWT) -m found
use_backend prod_domain if jwtPresent host_prod
use_backend dev_domain if jwtPresent host_dev
default_backend prod_domain …Run Code Online (Sandbox Code Playgroud) 我有水族馆和飞溅的问题.他们在开始后30分钟后停止工作.加载的页数为50K-80K.我做了cron工作,每10分钟自动重启一次,每个Splash容器,但它不起作用我该如何解决?
这是截图
来自HAProxy的统计数据
这是Splash配置
splash0:
image: scrapinghub/splash:3.0
command: --max-timeout 3600 --slots 150 --maxrss 1000 --verbosity 5
logging:
driver: "none"
expose:
- 8050
mem_limit: 1000m
memswap_limit: 1000m
restart: always
Run Code Online (Sandbox Code Playgroud)
和HAProxy
backend splash-cluster
option httpchk GET /
balance leastconn
# try another instance when connection is dropped
retries 2
option redispatch
server splash-0 splash0:8050 check maxconn 150 inter 2s fall 10 observe layer4
backend splash-misc
balance roundrobin
server splash-0 splash0:8050 check fall 15
Run Code Online (Sandbox Code Playgroud)
更新1 这是重启的脚本
#!/bin/sh
echo "BEGIN" >> restart.log
for index …Run Code Online (Sandbox Code Playgroud) 我对 HTTP 协议和一点点 HAProxy 非常熟悉,但我以前从未真正搞过 URL 重写和重定向。现在,我有 2 个“简单”的 HTTP 重定向要求,我一直很难弄清楚。
https://appserver.example.com应重定向到https://appserver.example.com/myapp/webapp/?auth=saml将用户指向saml登录页面。https://appserver.example.com/?auth=standard应该重定向到https://appserver.example.com/myapp/webapp/?auth=standard要求 1 工作正常:
myuser:~ myuser$ curl -I https://appserver.example.com
HTTP/1.1 301 Moved Permanently
Content-length: 0
Location: https://appserver.example.com/myapp/webapp/?auth=saml
Connection: close
myuser:~ myuser$
Run Code Online (Sandbox Code Playgroud)
但我在如何实施#2 上遇到了困难。正如我所想,关键是添加一个acl,然后在匹配http-request redirect prefix时添加另一行。acl
acl is_auth_std path /?auth=standard
http-request redirect prefix /myapp/webapp/?auth=standard code 301 if is_auth_std
Run Code Online (Sandbox Code Playgroud)
但显然这还不够。/?auth=standard仍然重定向到假定的根 URL:
myuser:~ myuser$ curl -I https://appserver.example.com/?auth=standard
HTTP/1.1 301 Moved Permanently
Content-length: 0
Location: https://appserver.example.com/myapp/webapp/?auth=saml
Connection: close …Run Code Online (Sandbox Code Playgroud)