我正在迁移现有的 django 项目以使用 wagtail CMS。
我不清楚如何使用 wagtail 进行速率限制,我在文档中没有看到任何相关内容。
举以下例子:
在集成 wagtail 之前,我有一个会返回隐私政策 html 页面的视图。这是使用 redis 进行速率限制的,您可以在下面看到方法装饰器和方法
@ratelimit(
key='ip',
rate='15/m',
block=True
)
def show_privacy_policy(request):
context = base_context(request)
return render(
request,
'pages/privacy_policy.html',
context
)
现在它被删除了,我有一个更通用的 wagtail 页面,用于呈现条款和条件或隐私政策等页面,我称之为
InfoPage
。我唯一定义的是我的 InfoPage 模型,它附加了模板路径wagtail/info_page.html
。
class InfoPage(Page):
template = "wagtail/info_page.html"
last_modified_date = models.DateField("Last modified date")
body = RichTextField(features=['bold', 'italic', 'link', 'ul', 'h3'])
content_panels = Page.content_panels + [
FieldPanel('last_modified_date'),
FieldPanel('body')
]
parent_page_types = ['news.Index']
subpage_types = []
这确实有效,并且我的所有信息页面都正确呈现。但是,我没有看到任何方法来限制对这些页面的访问。如果没有办法限制速率,我很容易受到 DDOS 攻击等。我在这里缺少什么?有没有办法限制访问速率或者我需要采取不同的方法?
我建议使用前端缓存,而不是速率限制,这样提供渲染页面的服务就很便宜。我将 Cloudflare 与缓存失效器中的内置 在此处输入链接描述一起使用。库存 Wagtail 发行版中包含许多缓存失效器,或者您可以使用 CodeRed 中的 wagtail-cache。