- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用监听 80 的 HAProxy 将请求发送到节点服务器(端口:3000)或 php 服务器(4000);我还安装了 CSF,它有可用的端口 3000 和 80。
当我在 http://example.com/forum/1/page.php
浏览页面时它工作正常,但有时当我不小心输入 example.com/forum/1
(没有尾部斜杠),它会不断加载并最终导致错误页面 ERR_CONNECTION_TIMED_OUT
。地址栏显示已经重定向到http://example.com:4000/forum/1/
。
由于我没有打开 4000 端口,当我多次访问 example.com/forum/1
时,它会触发 CSF 的阻止。我的问题是,我能否将所有指向实际文件夹 example.com/forum/1
(无尾部斜杠)的请求重定向到 404 页面?我已经尝试添加一个重写规则来为每个请求附加一个尾部斜杠,但这会破坏我的所有相对路径(参见我的问题 post)。
所以我想知道的是,为什么我从 http://example.com/forum 重定向到
?是HAproxy引起的吗? http://example.com:4000/forum/1/
/1
一些 HAproxy 配置:
frontend all 0.0.0.0:80
timeout client 1h
# use apache2 as default webserver for incoming traffic
default_backend apache2
backend apache2
balance roundrobin
option forwardfor
server apache2 myIpAddress:4000 weight 1 maxconn 1024 check
# server must be contacted within 5 seconds
timeout connect 5s
# all headers must arrive within 3 seconds
timeout http-request 3s
# server must respond within 25 seconds. should equal client timeout
timeout server 25s
这是我的重写规则:
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^ - [L]
RewriteCond %{REQUEST_URI} !^.*\.(jpg|css|js|gif|png)$ [NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^([^\.]+)$ $1.php [NC,L]
最佳答案
因为 /forum/1
是一个有效的物理目录,你会因为这个设置被重定向到 /forum/1/
:
DirectorySlash On
它由名为 mod_dir
的模块使用,如果缺少目录,它会在目录后添加尾部斜杠。
您当然可以使用以下方法关闭此标志:
DirectorySlash Off
但是be aware of security implications .
为了更安全,您还需要:
Options -Indexes
关闭目录列表。
安全警告(从链接手册中复制)
关闭尾部斜杠重定向可能会导致信息泄露。考虑这样一种情况,其中 mod_autoindex
处于事件状态(Options +Indexes
)并且 DirectoryIndex
设置为有效资源(例如,index.html),并且有没有为该 URL 定义其他特殊处理程序。在这种情况下,带有尾部斜杠的请求将显示 index.html
文件。但是没有尾部斜线的请求将列出目录内容。
更新:回答这部分问题:
My question is, can I redirect all the requests that are pointing to an actual folder
example.com/forum/1
(no trailing slash) to an 404 page?
您可以在 /forum/1/.htaccess
中使用此代码:
DirectorySlash On
RewriteEngine On
RewriteRule ^$ - [L,R=404]
这将强制使用尾部斜杠,以便重写规则可用于发送 404 错误。
关于php - 当 url 指向现有文件夹(无尾部斜杠)时如何重定向到 404。 HAproxy 或 mod-rewrite 相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30594199/
我只是看了一下HAproxy的源码来了解它是如何实现的,我看到了一个有趣的数据结构,叫做Elastic Binary Search tree .它似乎与二叉搜索树非常相似。但我想知道为负载均衡器选择这
我正在 AWS 上部署 NodeJS 应用程序。目前的结构是 ELB 1 个 HAProxy 实例 2+ 个运行 NodeJS 应用程序的 EC2 实例 Single HA Proxy 实例确保
更改配置文件时,我使用以下命令重启 HAProxy: /usr/local/sbin/haproxy -f /etc/haproxy.cfg -p /var/run/haproxy.pid -sf $
我有两个 HAProxy 实例。两个实例都启用了统计信息并且工作正常。 我正在尝试将两个实例的统计信息合并为一个,以便我可以使用单个 HAProxy 来查看前端/后端统计信息。我试图让两个 hapro
在重新启动 HAProxy 服务之前,有什么方法可以验证 HAProxy haproxy.cfg 文件吗?例如:较大的 haproxy.cfg 文件中可能存在小的拼写/语法错误。我搜索了多个论坛,但找
我希望在 HAProxy 中有一个限制规则,限制用户加载任何特定路径的速率,但我不知道在 HAProxy 中连接字符串的方法(至少在生成棍子 table 的 key )。所以我想要的是 tcp-req
我正在构建一个具有多个前端和后端的 haproxy 配置文件。它将有数百行长,我宁愿将其分成单独的文件,用于我想要负载平衡的每个不同网站。 HAProxy 是否提供从主 haproxy.cfg 文件链
我正在使用以下命令启动 HA 代理: sudo etc/init.d/haproxy start 我使用以下方法停止 HA 代理: sudo etc/init.d/haproxy stop 我如何为
我使用 haproxy 和 stunnel 处理 SSL(并使用代理模式来保留 haproxy 的原始 IP)。 我有几个 acl 测试,根据域、 header 或路径重定向到不同的后端。 问题是,无
我看到系统日志中弹出这些消息: Mar 10 12:51:35 db1 kernel: [5851729.958138] type=1400 audit(1457614295.823:2925931)
我在 haproxy.cfg 的默认部分有这个选项: option dontlog-normal option dontlognull 但是在日志文件中仍然有这种类型的日志行: localhost
我们使用以下方法将 URL 映射文件加载到 HAProxy 中: http-request redirect location %[capture.req.uri,map(/etc/haproxy/r
我目前正在重构我们在生产服务器上使用的 haproxy 配置,以从中央服务器转发 TCP 流量。目标是让一切都与 docker 容器一起工作,以帮助提高部署可靠性。 到目前为止一切都进展顺利,但现在我
我在我的 HAProxy 统计报告中看到 Sessions Curr、Max、Limit 均为 2000。 如何将最大和限制增加到 2000 以上? 最佳答案 使用maxconn Sets the m
我环顾四周,试图找到一个 HAProxy 匹配 SNI 通配符的示例,我的搜索提出了类似标题但与证书无关的问题。 具体来说,我需要使用 acme/letsencyrpt 为 dvsni 路由 nonc
我们有一个 haproxy 实例,我们的一个应用程序仅支持 TLSv1.0。当它尝试通过此 haproxy 连接时,它会因握手失败而失败。 如何在此 haproxy 实例上启用 TLSv1.0 支持。
如何构建HAPROXY配置文件来阻止特定HTTP方法的请求? 我们开始发现许多攻击使用我们的应用程序不支持的方法。我们宁愿拒绝负载均衡器的流量,也不愿让我们的应用程序陷入困境。 最佳答案 尝试将其放入
我使用 haproxy 1.6.4 作为 TCP(不是 HTTP)代理。我的客户正在发出 TCP 请求。他们不等待任何响应,他们只是发送数据并关闭连接。 当所有后端节点都关闭时,haproxy 的行为
我需要使用先前配置的 HAproxy v1.8 来管理服务器。更新到 v2.4 后,我注意到有关不再使用 regrep 的错误: [ALERT] (1574) : parsing [/etc/h
我们使用 HAProxy 将传入的 TCP 连接转发到使用原始 TCP 的单独服务器。我们看到的问题是客户端连接被接受然后关闭而不是立即被拒绝。由于我们启用了健康检查,HAProxy 有什么方法可以解
我是一名优秀的程序员,十分优秀!