隐藏或者修改nginx信息

细节决定成败,服务器的安全也是这样!隐藏或者修改nginx的信息,不是什么炫酷的技能,只是nginx设置中的一个小小的细节。

Http中的Nginx版本信息

查看http请求的response里面的header我们会发现有server这个参数,它表示服务端使用的是什么web服务器。

例如

新浪网:

Server: nginx

开源中国:

Server: Tengine

segmentfault甚至都没有返回server!

很多网站不止返回了nginx而且还带了版本号,而像版本号这种东西完全没必要暴露给用户,我们可以通过设置server_tokens off隐藏掉版本号:

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
    #                  ‘$status $body_bytes_sent "$http_referer" ‘
    #                  ‘"$http_user_agent" "$http_x_forwarded_for"‘;
    
    server_tokens off;    ##隐藏版本号

PHP中的Nginx版本信息

即使把server_tokens设为了off,也并不代表nginx的版本号是完全不可见的~

通过上图我们可以看到虽然http返回的header里面已经没有了版本号,但是php里面还是可以获取到nginx的版本号的,如果要对PHP也隐藏掉版本号就需要修改fastcgi.conf这个文件了:

去掉后面的 /$nginx_version 或者 直接注释掉这一行!

fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

修改或者隐藏Nginx信息

如果我希望nginx也不显示呢?或者修改nginx为Tengine呢?

这个时候就要修改nginx源码文件src/core/nginx.h,例如我把nginx修改问tengine:

/*
 * Copyright (C) Igor Sysoev
 * Copyright (C) Nginx, Inc.
 */
#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_
#define nginx_version      1009005
/*
#define NGINX_VERSION      "1.9.5"
#define NGINX_VER          "nginx/" NGINX_VERSION
*/
#define NGINX_VERSION      "2.1.1"
#define NGINX_VER          "Tengine/" NGINX_VERSION

#ifdef NGX_BUILD
#define NGINX_VER_BUILD    NGINX_VER " (" NGX_BUILD ")"
#else
#define NGINX_VER_BUILD    NGINX_VER
#endif
#define NGINX_VAR          "NGINX"
#define NGX_OLDPID_EXT     ".oldbin"
#endif /* _NGINX_H_INCLUDED_ */

也可以把NGINX_VER 赋值为空,这样Http 返回的header里面的server也为空了!

需要注意的是,如果server_tokens设置为off,即使源码NGINX_VER 赋值为空或者改成其他值,返回的server还是nginx,只是不显示版本号!

时间: 2024-10-27 05:51:16

隐藏或者修改nginx信息的相关文章

一文看懂如何隐藏或者修改nginx信息

Http中的Nginx版本信息查看http请求的response里面的header我们会发现有server这个参数,它表示服务端使用的是什么web服务器. 例如 新浪网: Server: nginx开源中国: Server: Tenginesegmentfault甚至都没有返回server! 很多网站不止返回了nginx而且还带了版本号,而像版本号这种东西完全没必要暴露给用户,我们可以通过设置server_tokens off隐藏掉版本号: http {include mime.types;de

nginx 安全笔记 (修改nginx的header信息和错误显示版本号)

随笔记载,欢迎指正: 修改nginx的header信息和错误显示版本号 1.隐藏版本号: nginx的配置文件nginx.conf找到http栏目加入: server_tokens off; 2.修改显示nginx的名称 需要修改源码文件: /opt/soft/nginx-1.2.0/src/http/ngx_http_special_response.c vi /opt/soft/nginx-1.2.0/src/http/ngx_http_special_response.c 找到29行: 2

nginx优化,隐藏版本号,修改用户和组,网页缓存时间,更改进程数,以及防盗链

设置nginx优化隐藏版本号,修改用户和组,网页缓存时间,更改进程数, 以及防盗链的代码内容 ========================隐藏版本号,修改用户和组 方法一: cd /opt/nginx-1.12.0/src/core vim nginx.h #define NGINX_VERSION "1.12.0" //在编译安装前去篡改版本号达到隐藏的效果 方法二: vim /usr/local/nginx/conf/nginx.conf server_tokens off;

隐藏Apache、nginx和PHP的版本号的配置方法

最近提示说有漏洞,暴露apache.nginx和php的版本号.网上搜了下,整理的方法如下: 首先说apache 在http.conf文件里添加下面两行,默认是没有的 ServerSignature Off ServerTokens Prod ServerSignature出现在Apache所产生的像404页面.目录列表等页面的底部.ServerTokens目录被用来判断Apache会在Server HTTP响应包的头部填充什么信息.如果把ServerTokens设为Prod,那么HTTP响应包

修改nginx访问日志的中日志和时间期的格式

概述: 软件:nginx mongodb nginx日期时间格式[$time_local] 对应的日期时间格式为 [19/Jul/2014:18:50:51 +0800] 现在有一种需求,就是将nginx中访问日志的记录信息插入到mongodb数据库中,然后对某些视频做视频统计,然后做排行 当初在做的时候,首先想到的方法就是一种比较简单的方法,也没有考虑的太多,就直接使用mongodb自带的导入document的方式,这种方法显然十分简单,但是在后期却出现了一连串的问题,尤其是数据类型.因为[1

修改Nginx的header伪装服务器

有时候为了伪装自己的真实服务器环境.不像让对方知道自己的webserver真实环境,就不得不修改我们的webserer软件了!今天看了一下baidu.com的webserver感觉像是nginx修改的.C:/curl-7.18.0>curl.exe -I www.baidu.comHTTP/1.1 200 OKDate: Tue, 11 Mar 2008 05:00:39 GMTServer: BWS/1.0Content-Length: 3022Content-Type: text/htmlC

随机修改nginx端口脚本及思路

需求:随机修改nginx端口,一小时一次,然后发邮件通知 脚本思路,先在/root目录下建立个1.txt文件,随机填入4位数字 建个2.sh脚本,脚本内容如下: #!/bin/bash cd b=`echo $RANDOM |cut -c 1-4` echo $b >2.txt 上主脚本port_change.sh #!/bin/bash cd c=`cat 1.txt` d=`cat 2.txt` netstat -lnpt|awk '{print $4}' |awk -F: '{print 

Consul+Registrator+Consul-template实现动态修改nginx配置文件

实现需求 用nginx做负载均衡,手动的方式是在upstream中添加或删除后端服务器,比较麻烦. 通过Registrator收集需要注册到Consul作为Nginx后端服务器信息然后注册到Consul key/value.Consul-template去Consul key/value中读取信息,然后自动修改Nginx配置文件并平滑重启Nginx.不需要修改nginx.conf 环境 192.168.0.149 Mesos-master Zookeeper Consul-server Cons

apache、php隐藏http头部版本信息的实现方法

1.apache隐藏头部版本信息,编辑httpd.conf文件,找到: ServerTokens OS ServerSignature On 修改为: ServerTokens ProductOnly ServerSignature Off 2.上面的方法是默认情况下安装的Apache,如果是编译安装的,还可以用修改源码编译的方法: 进入Apache的源码目录下的include目录,然后编辑ap_release.h这个文件,你会看到有如下变量 #define AP_SERVER_BASEVEND