侧边栏壁纸
  • 累计撰写 90 篇文章
  • 累计创建 489 个标签
  • 累计收到 70 条评论

目 录CONTENT

文章目录

如何禁止gunicorn在response的Header中添加Server字段?

火星人
2024-06-12 / 0 评论 / 0 点赞 / 181 阅读 / 0 字 / 正在检测是否收录...
  1. 使用flask作为python应用服务器,组建接口以供第三方调用。

  2. 为保持服务器稳定,使用gunicorn封装flask,作为web服务器对外提供服务。因为规模较小,暂时未上负载均衡,无需nginx代理。

  3. 发现gunicorn会在response的Header种,添加一个Server字段,其值是gunicorn

  4. 这个有点不爽,会让别人看到我的服务器类型,进而有针对的进行一些破解或者破坏工作。因此需要整改。

  5. 尝试了系列方法,都不太好用。首先是尝试了,在flask的api中注册一个钩子,app.after_request,这里确实可以更改response中的绝大多数header值。

  6. 但是这个Server字段不行。感觉gunicorn是包在flask的外边的,输入先经过gunicorn,输出后经过gunicorn,而这个字段是gunicorn添加或者修改的,因此flask中设置了这个值,经过gunicorn之后,又被它修改为gunicorn了。

  7. 尝试了一些办法,比如修改gunicorn.SERVER_SOFTWARE发现并不好用。

  8. 后来点击查看了一下这个变量的源代码:

image

  1. 发现了一个问题,我发现server字段的值是:gunicorn,并没有带上版本号。所以猜测,是不是这个版本(22.0)修改了一下,使用SERVER变量作为header中的值,而不是SERVER_SOFTWARE。

  2. 所以尝试修改了一下SERVER的值,再试,果然好用。只需要在gunicorn的配置文件中修改即可,使用gunicorn -c 配置文件名就能起作用了。

  3. 而我使用的是代码的方式:

image-1718165702914

  1. 事实证明,只要在GunicornApp.run()之前设置,都是有效的。注意:GunicornApp是我自定义的一个App,继承自WSGIApplication。

  2. 另外一个办法,是在任意或者总的源码包中的__init__.py文件中,做这个设置,也是好使的。

0

评论区