有一个隐藏版本的选项,因此它只显示nginx,但有没有办法隐藏它,所以它不会显示任何内容或更改标题?
如果您使用nginx代理后端应用程序并希望后端在Server:
没有nginx覆盖的情况下宣传自己的标头,那么您可以进入您的server {…}
节并设置:
proxy_pass_header Server;
这将说服nginx单独保留该标题,而不是重写后端设置的值.
最后一次更新是前一段时间,所以这就是我在Ubuntu上的作用:
sudo apt-get update sudo apt-get install nginx-extras
然后将以下两行添加到所述http
的部分nginx.conf
,其通常位于/etc/nginx/nginx.conf:
sudo nano /etc/nginx/nginx.conf server_tokens off; # removed pound sign more_set_headers 'Server: Eff_You_Script_Kiddies!';
另外,不要忘记重启nginx sudo service nginx restart
.
与Apache一样,这是对源代码的快速编辑和重新编译.来自Calomel.org:
Server:string是一个标头,它被发送回客户端,告诉他们你正在运行什么类型的http服务器,以及可能的版本.Alexia和Netcraft等地方使用此字符串来收集有关Internet上有多少以及哪种类型的Web服务器的统计信息.为了支持Nginx的作者和统计数据,我们建议保持这个字符串不变.但是,为了安全起见,您可能不希望别人知道您正在运行的内容,您可以在源代码中更改此内容.编辑源文件
src/http/ngx_http_header_filter_module.c
,查看第48和49行.您可以将String更改为您想要的任何内容.
## vi src/http/ngx_http_header_filter_module.c (lines 48 and 49) static char ngx_http_server_string[] = "Server: MyDomain.com" CRLF; static char ngx_http_server_full_string[] = "Server: MyDomain.com" CRLF;
2011年3月编辑:道具弗拉菲乌斯低于指出一个新的选择,更换Nginx的标准HttpHeadersModule与叉形HttpHeadersMoreModule.重新编译标准模块仍然是快速修复,如果您想使用标准模块并且不会经常更改服务器字符串,则有意义.但是如果你想要更多,那么HttpHeadersMoreModule是一个强大的项目,可以让你用你的HTTP头做各种运行时黑魔法.
简单,编辑/etc/nginx/nginx.conf并删除评论
#server_tokens off;
搜索http部分.
这很简单:将这些行添加到服务器部分:
server_tokens off; more_set_headers 'Server: My Very Own Server';
有一个特殊的模块:http://wiki.nginx.org/NginxHttpHeadersMoreModule
此模块允许您添加,设置或清除指定的任何输出或输入标题.
这是标准的增强版本标头模块,因为它提供更多的实用程序等复位或清除"内置标题"等
Content-Type
,Content-Length
和Server
.它还允许您使用
-s
选项指定可选的HTTP状态代码条件,并使用选项指定可选的内容类型条件,-t
同时使用more_set_headers和more_clear_headers指令修改输出标头...
安装Nginx Extras
sudo apt-get update sudo apt-get install nginx-extras
通过在nginx.conf中添加以下两行(在http部分下),可以从响应中删除服务器详细信息
more_clear_headers Server; server_tokens off;
如果您只需将标题更改为另外五个字母或更少的字符串,则可以简单地修补二进制文件.
sed -i 's/nginx\r/thing\r/' `which nginx`
作为一种解决方案,它具有一些显着的优势.也就是说,您可以允许包管理器处理您的nginx版本控制(因此,不会从源代码编译),即使您的发行版没有nginx-extras,也不需要担心任何其他版本像nginx-extras这样易受攻击的代码.
当然,您还需要设置选项server_tokens off
,隐藏版本号或修补格式字符串.
我说"五个字母或更少",因为你当然可以取代:
nginx的\ r\0
同
鲍勃\ r\0\r\0
留下最后两个字节不变.
如果你真的想要超过五个字符,你会想要打开server_tokens,并替换(略长一点)格式字符串,尽管格式字符串的长度(1)对于该长度有一个上限(对于回车).
...如果上述任何一个对您没有意义,或者您之前从未打过二进制文件,那么您可能希望远离这种方法.