你如何更改nginx返回的服务器头?

有一个隐藏版本的选项,所以它只会显示nginx,但是有没有办法隐藏它,所以它不会显示任何内容或更改标题?

像Apache一样,这是对源代码的快速编辑并重新编译。 来自Calomel.org :

服务器:string是发回到客户端的头,告诉他们你正在运行什么types的http服务器,可能是什么版本。 这个string被像Alexia和Netcraft这样的地方用来收集有关在因特网上有多lessWeb服务器的types的统计信息。 为了支持Nginx的作者和统计数据,我们build议保留这个string。 但是,为了安全起见,您可能不希望人们知道您正在运行的是什么,您可以在源代码中进行更改。 在第48行和第49行中编辑源文件src/http/ngx_http_header_filter_module.c 。可以将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月编辑:指向下面的Flavius指出一个新的选项,用分叉的HttpHeadersMoreModulereplaceNginx的标准HttpHeadersModule 。 重新编译标准模块仍然是一个快速的解决scheme,如果你想使用标准模块,并且不会经常更改服务器string,那么它是有意义的。 但是如果你想要更多的话,HttpHeadersMoreModule是一个强大的项目,可以让你用HTTP头做各种运行时黑魔法。

如果您使用nginx代理后端应用程序,并希望后端在不覆盖nginx的情况下通告自己的Server: header,则可以进入server {…}节并设置:

 proxy_pass_header Server; 

这将说服nginx单独离开这个头,而不是重写后端设置的值。

最近一次更新是在不久前,所以这里是我在Ubuntu上的工作:

 sudo apt-get update sudo apt-get install nginx-extras 

然后将以下两行添加到nginx.confhttp部分,该部分通常位于/etc/nginx/nginx.conf中:

 sudo nano /etc/nginx/nginx.conf server_tokens off; # removed pound sign more_set_headers 'Server: Eff_You_Script_Kiddies!'; 

此外,不要忘记用sudo service nginx restart

很简单,编辑/etc/nginx/nginx.conf并从中删除评论

 #server_tokens off; 

searchhttp部分。

有一个特殊的模块: http : //wiki.nginx.org/NginxHttpHeadersMoreModule

此模块允许您添加,设置或清除您指定的任何输出或input标题。

这是标准头文件模块的增强版本,因为它提供了更多的实用程序,如重置或清除“内置头文件”,如Content-TypeContent-LengthServer

它还允许您使用-s选项指定可选的HTTP状态代码条件,使用-t选项指定可选的内容types条件,同时使用more_set_headers和more_clear_headers指令修改输出标题。

这很简单:将这些行添加到服务器部分:

 server_tokens off; more_set_headers 'Server: My Very Own Server'; 

如果您只需将标题更改为另一个不超过五个字母的string,则可以简单地修补二进制文件。

 sed -i 's/nginx\r/thing\r/' `which nginx` 

作为一个解决scheme,它有几个显着的优点。 也就是说,即使nginx-extras不适用于您的发行版,您也可以允许您的nginx版本控制由包pipe理器处理(所以不需要从源代码编译),并且您不需要担心任何其他附加类似nginx-extras的代码很脆弱。

当然,您还需要server_tokens off选项server_tokens off ,以隐藏版本号,或修补该格式string。

我说“五个字母或更less”,因为当然你可以随时更换:

nginx的\ r \ 0

鲍勃\ r \ 0 \ r \ 0

留下最后两个字节不变。

如果你真的想要5个以上的字符,你可以打开server_tokens,并replace(略长一点的)格式化string,虽然格式化string长度的长度有一个上限 – 1回车)。

…如果上面没有一个对你有意义,或者你从来没有修补过一个二进制文件,你可能想要远离这种方法。

安装Nginx Extras

 sudo apt-get update sudo apt-get install nginx-extras 

服务器细节可以通过在nginx.conf中添加以下两行(http部分下)

 more_clear_headers Server; server_tokens off; 

唯一的方法是修改文件src / http / ngx_http_header_filter_module.c。 我把第48行的nginx改成了不同的string。

你可以在nginxconfiguration文件中做的是将server_tokens设置为off。 这将防止nginx打印版本号。

要检查一下,请尝试curl -I http://vurbu.com/ | grep服务器

它应该返回

 Server: Hai 

你问在响应中的服务器标题值? 你可以尝试用add_header指令来改变它,但是我不确定它是否会起作用。 http://wiki.codemongers.com/NginxHttpHeadersModule