定制NGINX的Header返回信息 Nginx安全教程

定制NGINX的Header返回信息

因为通常我们不愿意把服务器所使用的版本信息 服务器web软件信息
返回给用户 这样可以避免很多安全性问题
因为对方无法判断你的web服务器是什么软件 什么版本
也就少了很多入侵的可能性

比如 我们使用 curl -I www.baidu.com

[root@host194 ~]# curl -I www.baidu.com
HTTP/1.1 200 OK
Date: Mon, 02 Apr 2012 12:20:58 GMT
Server: BWS/1.0
Content-Length: 7869
Content-Type: text/html;charset=gb2312
Cache-Control: private
Expires: Mon, 02 Apr 2012 12:20:58 GMT
Set-Cookie: BAIDUID=015BC91EC78AAA90FAE9AAAF4DF1043F:FG=1; expires=Mon, 02-Apr-42 12:20:58 GMT; path=/; domain=.baidu.com
P3P: CP=” OTI DSP COR IVA OUR IND COM ”
Connection: Keep-Alive

可以返回百度使用的web服务器为 BWS/1.0
因为这个是他们自己开发定制的 全称为Baidu Web Service 版本为1.0

那么如何修改掉这个header头呢?
我们以Nginx为例
先安装nginx的依赖包

yum install -y lynx pcre* openssl* zlib*

在安装 nginx
我们以编译方式安装

$ cd /usr/local/src
$ wget http://nginx.org/download/nginx-1.0.13.tar.gz
$ tar -xzf nginx-1.0.13.tar.gz
$ cd nginx-*
$ ./configure
$ make
$ make install

接着在下载 NginX headers-more 模块
开源官方网站为 https://github.com/agentzh/headers-more-nginx-module

$ cd /usr/local/src
$ lynx https://github.com/agentzh/headers-more-nginx-module/zipball/v0.17rc1

把解压的文件移动到nginx的MOD目录

$ mkdir /usr/local/nginx/mod
$ unzip agentzh-headers-more-nginx-module-v0.17rc1-0-g3580526.zip
$ mv agentzh-headers-more-nginx-module-3580526 headers-more
$ mv headers-more /usr/local/nginx/mod

重新在编译一次 注意这个时候需要指定模块 否则无法自动编译

$ cd /usr/local/src/nginx*
$ ./configure –add-module=/usr/local/nginx/mod/headers-more/
$ make
$ make install

现在我们添加一个虚拟主机

$ useradd -m mywebs
$ mkdir /home/mywebs/public_html | mkdir /home/mywebs/logs
$ touch /home/mywebs/logs/access_log | touch /home/mywebs/logs/error_log
$ chown mywebs.mywebs * -R
$ chmod 755 /home/mywebs

nginx.conf 的配置文件为

user nobody;
worker_processes 1;

error_log logs/error.log info;

events {
worker_connections 1024;
}

http {
#下面第一条就是你的web服务器名字 可以直接修改
more_set_headers “Server: HostSoft Web Server”;
server_names_hash_max_size 2048;
include mime.types;
default_type application/octet-stream;

log_format main ‘$remote_addr – $remote_user [$time_local] $status ‘
‘”$request” $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;

sendfile on;
tcp_nopush on;

keepalive_timeout 10;

gzip on;

server {

# this is your access logs location
access_log /home/mywebs/logs/access_log;
# this is your error logs location
error_log /home/mywebs/logs/error_log warn;
listen 80;
# change to your domain
server_name mywebserver.net www.mywebserver.net;

location / {
# this is your public_html directory
root /home/mywebs/public_html;
index index.html index.htm;
}
}
}

好了 现在我们先测试下配置文件是不是正确

/usr/local/nginx/sbin/nginx -t

然后在启动

/usr/local/nginx/sbin/nginx

这个时候使用 curl -I www.你的域名.com 测试 返回

Date: Tue, 13 Mar 2012 04:50:14 GMT
Connection: keep-alive
Content-Length: 23
Last-Modified: Tue, 13 Mar 2012 04:29:33 GMT
Server: HostSoft Web Server
Content-Type: text/html
Accept-Ranges: bytes

改了吧?

我们还可以设置

more_clear_headers “Content-Type: “;
more_clear_headers “Accept-Ranges: “;
more_clear_headers “Content-Length: “;

这样就不会返回这些信息了
返回的 应该是

Date: Tue, 13 Mar 2012 04:50:14 GMT
Connection: keep-alive
Last-Modified: Tue, 13 Mar 2012 04:29:33 GMT
Server: HostSoft Web Server

相关:

  • nginx header
  • 如何改nginx名称
  • nginx修改header
  • nginx 按照机子名字
  • nginx http头
  • nginx content-length
  • nginx conf P3P
  • inr1r
  • good6oe
  • brightv2l
Scroll to top