我刚开始在我的应用程序前面试用HA代理进行热故障转移.我注意到从打开Web客户端到服务器大约10分钟后它正在关闭websocket.
如何禁用超时以保持websocket打开?我可以确认这两个盒子确实在整个时间内.谢谢.
我正在寻找一个HAProxy匹配SNI通配符的例子,我的搜索提出了类似的标题,但无关的证书问题.
具体来说,我需要使用acme/letsencyrpt为dvsni路由nonce域.
frontend foo_ft_https
mode tcp
option tcplog
bind 0.0.0.0:443
acl foo_app_letsencrypt req.ssl_sni -i *.acme.invalid
use_backend foo_bk_letsencrypt if foo_app_letsencrypt
default_backend foo_bk_default
backend foo_bk_letsencrypt
mode tcp
option tcplog
server foo_srv_letsencrypt 127.0.0.1:3443
backend foo_bk_default
mode tcp
option tcplog
server foo_srv_default 127.0.0.1:8443
Run Code Online (Sandbox Code Playgroud)
注意:所有任意名称都以'foo_'为前缀,以便读者可以轻松地将它们与关键字,指令等区分开来.
我想向我的 Web 应用程序的用户显示错误。在处理请求时,我可能会提出HTTPError这样的问题:
raise tornado.web.HTTPError(403, reason="You're not authorised")
Run Code Online (Sandbox Code Playgroud)
在我的开发环境中运行它时,会产生如下响应状态:
403 You're not authorised
Run Code Online (Sandbox Code Playgroud)
但是当我在生产中运行它时,我得到:
403 Forbidden
Run Code Online (Sandbox Code Playgroud)
更改serve_traceback和debug选项无济于事:在响应正文中返回回溯,但状态消息仍然只是“禁止”。
为什么它在生产中返回错误消息?
龙卷风 4.1
我们有一个 Web 应用程序,使用 ajax 调用运行在不同域上的后端(-> 需要 CORS)。后端由HAproxy 1.4.22组成和多个 Wildfly(在 OpenShift PaaS 上运行)组成。如果没有 Wildfly 可用(例如,在“维护”期间),HAproxy 会为每个请求或配置的错误文件提供 503 服务。到目前为止,一切都很好...
对于 Web 应用程序来说,根据被拒绝的后端请求(带有 503)正确可视化“维护模式”是一个问题,因为浏览器首先发送一个 OPTIONS 请求(预检)并已收到 503。这最终导致浏览器不会将此状态代码反映到 JavaScript 中执行的 ajax 调用(我们总是得到状态代码 0 作为响应,因为浏览器将其解释为预检的致命失败并拒绝任何访问)。这个故事并不新鲜,在 stackoverflow 上有很多帖子。
那么如何解决这个问题呢?我的想法是提供两个不同的错误文件(HAproxy 语言中的“错误文件”) - 一个提供内容为“HTTP/1.1 200 OK.... Access-Control-Allow-Origin: *....”的 OPTIONS 请求以传递在浏览器中进行预检,然后一个错误文件为 POST 请求提供内容“HTTP/1.1 503 .....”,让浏览器在 ajax 响应中真正反映状态 503。但是,我无法运行它。
global
maxconn 256
defaults
mode http
log global
option httplog
...
listen express 127.4.184.2:8080
acl is_options method OPTIONS
acl is_post method POST
errorfile 503 /var/lib/openshift/564468c90c1e66c7f2000077/app-root/runtime/repo/503.http if is_post …Run Code Online (Sandbox Code Playgroud) 遇到特定的 http 状态代码时是否可以进行 HaProxy 故障转移?
如果 tomcat 服务器本身停止/失败,我有以下通用 haproxy 代码可以正常工作。但是,当从 tomcat 中也遇到http 状态代码502 Bad Gateway或500 Internal Server Error时,我想进行故障转移。即使在任何节点中遇到 500、404 状态代码,以下配置仍将继续发送流量。
backend db01_replication
mode http
bind 192.168.0.1:80
server app1 10.0.0.19:8080 check inter 10s rise 2 fall 2
server app2 10.0.0.11:8080 check inter 10s rise 2 fall 2
server app3 10.0.0.13:8080 check inter 10s rise 2 fall 2
Run Code Online (Sandbox Code Playgroud)
提前致谢
我对haproxy的了解极少。在测试配置
S3托管网站(路由53别名)
-content.mydomain.com URL登陆haproxy-www.mydomain.com/getfiles/
是否可以将重新路由www.mydomain.com/getfiles/重定向到content.mydomain.com(s3托管网站)。
我能够使用下面提到的配置将其重定向到在同一服务器上运行的另一个应用程序
acl display-s3-content path_beg /getfiles/
use_backend my-content if display-s3-content
backend my-content
reqrep ^([^\ ]*)\ (.*) \1\ /path/\2
server test www.mycomain.com:1936
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将其重定向到s3托管站点时,它不起作用。以下是无法正常使用的配置的后端
reqrep ^([^\ ]*)\ (.*) \1\ /path/\2
server test1 content.mydomain.com
Run Code Online (Sandbox Code Playgroud)
谢谢!
我是 haproxy 的新手(实际上通常是代理),我不知道如何向我的后端添加路径。我的后端定义为:
服务器 server1 ns.foo.com:7170 检查
我想添加 /web 以便将请求定向到https://ns.foo.com:7170/web。
谢谢,马克
我在两个VPS中有类似100个类似网站的东西.我想使用HAProxy动态切换流量,但同时我想添加SSL证书.
我想使用添加变量来为每个网站调用特定证书.例如:
frontend web-https
bind 0.0.0.0:443 ssl crt /etc/ssl/certs/{{domain}}.pem
reqadd X-Forwarded-Proto:\ https
rspadd Strict-Transport-Security:\ max-age=31536000
default_backend website
Run Code Online (Sandbox Code Playgroud)
我还想检查SSL证书是否真的可用,如果它不可用,请切换到带有重定向的HTTP.
这可能与HAProxy有关吗?
我知道Consul是微服务时代的服务发现工具。但是在领事之前,发明了HA Proxy。那么,为什么我们需要Consul进行服务发现,或者Consul比HA Proxy更强大?Consul和HA Proxy之间有什么比较?请给我一些建议,我应该使用还是可以同时使用它们。
使用 HAProxy 时,出现错误 413: Request Entity Too Large
当我尝试上传一些太大的文件时会发生此错误,但是我找不到有关如何增加此限制的任何文档。
如何将最大上传限制增加到指定的 MB 数量?