一文看懂如何隐藏或者修改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_HINCLUDED#define _NGINX_HINCLUDED#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_HINCLUDED */
    也可以把NGINX_VER 赋值为空,这样Http 返回的header里面的server也为空了!

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

原文地址:https://blog.51cto.com/14416052/2422155

时间: 2024-07-30 08:22:18

一文看懂如何隐藏或者修改nginx信息的相关文章

隐藏或者修改nginx信息

细节决定成败,服务器的安全也是这样!隐藏或者修改nginx的信息,不是什么炫酷的技能,只是nginx设置中的一个小小的细节. Http中的Nginx版本信息 查看http请求的response里面的header我们会发现有server这个参数,它表示服务端使用的是什么web服务器. 例如 新浪网: Server: nginx 开源中国: Server: Tengine segmentfault甚至都没有返回server! 很多网站不止返回了nginx而且还带了版本号,而像版本号这种东西完全没必要

一文看懂HashMap

一文看懂HashMap 总所周知HashMap是面试中经常问到的一个知识点,也是判断一个候选人基础是否扎实的标准之一,因为通过HashMap可以引出很多知识点,比如数据结构(数组.链表.红黑树).equals和hashcode方法,除此之外还可以引出线程安全的问题,HashMap是我在初学阶段学到的设计的最为巧妙的集合,里面有很多细节以及优化技巧都值得我们深入学习,话不多说先看看相关的面试题: 默认大小.负载因子以及扩容倍数是多少 底层数据结构 如何处理hash冲突的 如何计算一个key的has

一文看懂命令行参数的用法——Python中的getopt神器

一文看懂命令行参数的用法--Python中的getopt神器 参考原文:Python模块之命令行参数解析 - 每天进步一点点!!! - 博客园 https://www.cnblogs.com/madsnotes/articles/5687079.htmlpython getopt使用 - tianzhu123的专栏 - CSDN博客 https://blog.csdn.net/tianzhu123/article/details/7655499在运行程序时,可能需要根据不同的条件,输入不同的命令

[转帖]一文看懂mysql数据库本质及存储引擎innodb+myisam

一文看懂mysql数据库本质及存储引擎innodb+myisam https://www.toutiao.com/i6740201316745740807/ 原创 波波说运维 2019-09-29 00:01:00 概述 今天主要讲下mysql数据库引擎的一些概念和mysql数据库本质,一句话总结: 文件夹-文件:一个数据库其实就是一个的文件夹,数据库里面的表就是文件夹里的一个或者多个文件(根据数据库引擎不同而不同,MyISAM是3个,InnoDB是2.5个) mysql的数据库其实就是存放在M

一文看懂java io系统 (转)

出处:  一文看懂java io系统 学习java IO系统,重点是学会IO模型,了解了各种IO模型之后就可以更好的理解java IO Java IO 是一套Java用来读写数据(输入和输出)的API.大部分程序都要处理一些输入,并由输入产生一些输出.Java为此提供了java.io包 java中io系统可以分为Bio,Nio,Aio三种io模型 关于Bio,我们需要知道什么是同步阻塞IO模型,Bio操作的对象:流,以及如何使用Bio进行网络编程,使用Bio进行网络编程的问题 关于Nio,我们需

从概念到底层技术,一文看懂区块链架构设计

转自:http://www.8btc.com/ebook-blockchain https://blog.csdn.net/lucky_greenegg/article/details/52821924 前言 区块链作为一种架构设计的实现,与基础语言或平台等差别较大.区块链是加密货币背后的技术,是当下与VR虚拟现实等比肩的热门技术之一,本身不是新技术,类似Ajax,可以说它是一种技术架构,所以我们从架构设计的角度谈谈区块链的技术实现. 无论你擅长什么编程语言,都能够参考这种设计去实现一款区块链产

一文看懂大数据的技术生态圈

大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的.你可以把它比作一个厨房所以需要的各种工具.锅碗瓢盆,各有各的用处,互相之间又有重合.你可以用汤锅直接当碗吃饭喝汤,你可以用小刀或者刨子去皮.但是每个工具有自己的特性,虽然奇怪的组合也能工作,但是未必是最佳选择. 大数据,首先你要能存的下大数据. 传统的文件系统是单机的,不能横跨不同的机器.HDFS(Hadoop Distributed FileSystem)的设计本质上是为了大量的数据

一文看懂Kafka消息格式的演变

摘要 对于一个成熟的消息中间件而言,消息格式不仅关系到功能维度的扩展,还牵涉到性能维度的优化.随着Kafka的迅猛发展,其消息格式也在不断的升级改进,从0.8.x版本开始到现在的1.1.x版本,Kafka的消息格式也经历了3个版本.本文这里主要来讲述Kafka的三个版本的消息格式的演变,文章偏长,建议先关注后鉴定. Kafka根据topic(主题)对消息进行分类,发布到Kafka集群的每条消息都需要指定一个topic,每个topic将被分为多个partition(分区).每个partition在

一文看懂 Github

GitHub 介绍 GitHub 是为开发者构建的一个开发平台.GitHub 是一个受开发者工作方式启发的开发平台,从开源到商业,能够在上面进行托管和查看代码.管理项目和数百万其他开发人员一起开发软件.GitHub 提供免费账户和付费账户,免费账户只能创建开源的项目,付费账户可以创建私有项目.对学生有一定的福利,如果你是学生的话,可以用学校分配的邮箱在官网进行申请,申请通过之后,也能够创建私有项目. 要完成本教程,你需要一个 GitHub 帐户,可以在官网进行注册. 下面将分别介绍 GitHub