-
使用flask作为python应用服务器,组建接口以供第三方调用。
-
为保持服务器稳定,使用gunicorn封装flask,作为web服务器对外提供服务。因为规模较小,暂时未上负载均衡,无需nginx代理。
-
发现gunicorn会在response的Header种,添加一个Server字段,其值是gunicorn
-
这个有点不爽,会让别人看到我的服务器类型,进而有针对的进行一些破解或者破坏工作。因此需要整改。
-
尝试了系列方法,都不太好用。首先是尝试了,在flask的api中注册一个钩子,app.after_request,这里确实可以更改response中的绝大多数header值。
-
但是这个Server字段不行。感觉gunicorn是包在flask的外边的,输入先经过gunicorn,输出后经过gunicorn,而这个字段是gunicorn添加或者修改的,因此flask中设置了这个值,经过gunicorn之后,又被它修改为gunicorn了。
-
尝试了一些办法,比如修改gunicorn.SERVER_SOFTWARE发现并不好用。
-
后来点击查看了一下这个变量的源代码:
-
发现了一个问题,我发现server字段的值是:gunicorn,并没有带上版本号。所以猜测,是不是这个版本(22.0)修改了一下,使用SERVER变量作为header中的值,而不是SERVER_SOFTWARE。
-
所以尝试修改了一下SERVER的值,再试,果然好用。只需要在gunicorn的配置文件中修改即可,使用gunicorn -c 配置文件名就能起作用了。
-
而我使用的是代码的方式:
-
事实证明,只要在GunicornApp.run()之前设置,都是有效的。注意:GunicornApp是我自定义的一个App,继承自WSGIApplication。
-
另外一个办法,是在任意或者总的源码包中的__init__.py文件中,做这个设置,也是好使的。
评论区