Nginx隐藏server头信息的实现

目录
  • 分析
  • 隐藏版本号
  • php-fpm服务器隐藏版本号
  • 隐藏Server

分析

上一篇文章我们搭建了Nginx,请求响应头如下

[nginx@node01 sbin]$ curl -I 127.0.0.1:8090
HTTP/1.1 200 OK
Server: nginx/1.9.9
Date: Fri, 11 Nov 2022 14:56:38 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 11 Nov 2022 12:47:59 GMT
Connection: keep-alive
ETag: "636e447f-264"
Accept-Ranges: bytes

可看到这么一行 Server: nginx/1.9.9,暴露了服务为Nginx并且还知道了具体版本号,如果有人想要攻击我们网站,那么他们就会通过这种方式来获取我们网站的一些信息。比如 知道了是Nginx,并且如果恰好发现该版本是有一些漏洞的,那么攻击者就能够很轻松的找到攻击我们的方案,所以隐藏一些信息是很有必要的。

Nginx它考虑到了这方面的问题。给我们提供了一个配置 server_tokens。将该配置放到http快中就可以隐藏版本号了。

隐藏版本号

修改 nginx.conf,添加server_tokens,配置如下

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens off;
    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       8090;
        server_name  localhost;
            
        location / {
            root   html;
            index  index.html index.htm;
        }
    }

}

重启nginx

版本号已隐藏

[nginx@node01 sbin]$ ./nginx -s reload

[nginx@node01 sbin]$ curl -I 127.0.0.1:8090
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 11 Nov 2022 15:08:55 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 11 Nov 2022 12:47:59 GMT
Connection: keep-alive
ETag: "636e447f-264"
Accept-Ranges: bytes

php-fpm服务器隐藏版本号

如果搭建的是 php-fpm 服务器的话,还得修改 fastcgi.conf

在该配置中有这么一行

fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
修改后
fastcgi_param  SERVER_SOFTWARE    nginx;

隐藏Server

经过上面的修改,版本号就已经隐藏了,如果连Server信息都不想让别人知道,那就只能修改源码了

修改C文件 src/http/ngx_http_header_filter_module.c

大概在50行左右,将nginx修改为 其它名字

//static char ngx_http_server_string[] = "Server: nginx" CRLF;
//static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;
static char ngx_http_server_string[] = "Server: juan" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

重新编译前记得停掉Nginx 备份自己的nginx.conf

Nginx源码安装教程 https://www.jb51.net/article/142431.htm

编译完后替换之前备份的文件,启动Nginx

[nginx@node01 sbin]$ curl -I 127.0.0.1:8090
HTTP/1.1 200 OK
Server: juan
Date: Fri, 11 Nov 2022 15:34:27 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 11 Nov 2022 15:30:46 GMT
Connection: keep-alive
ETag: "636e6aa6-264"
Accept-Ranges: bytes

这时Server已经变成自己定义的名字了,nginx的加固就介绍到这。

到此这篇关于Nginx隐藏server头信息的实现的文章就介绍到这了,更多相关Nginx隐藏server头信息内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • nginx配置指令之server_name的具体使用

    目录 前言 server_name指令 精确匹配配置 通配符模式配置 正则表达式配置 server_name与host匹配优先级如下: 如果都不匹配 前言 作为nginx的http模块中的重要指令,对于使用nginx的同学来说,有必要做深入的了解: server_name指令 用于设置虚拟主机服务名称,如:127.0.0.1 . localhost .域名[www.baidu.com | www.jd.com] 关于 server_name 的配置方式有三种,分别是: 精确匹配 通配符匹配 正则

  • 详解nginx 代理多个服务器(多个server方式)

    上一篇文章介绍了nginx的基本配置和使用方法,并且简单的介绍了一下如何利用nginx结合tomcat进行使用,达到反向代理的作用.现在我们要使用nginx达到这样的一个目的,能够代理多个服务器. 首先修改配置文件: #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/ngin

  • nginx提示:500 Internal Server Error错误的解决方法

    现在越来越多的站点开始用 Nginx ,("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了.Igor 将源代码以类BSD许可证的形式发布. 在高并发连接的情况下,Nginx是Apache服务器不错的替代品.Nginx同时也可以作为7层负载均衡服务器来使用.根据测试结果,Nginx 0.6

  • ngnix的简单转发请求之server和location配置详解

    简单梳理一下nginx中关于server 和location的配置. 比如URL:www.mask_dev2.com:9999/login/ server管的前半部分,即:www.mask_dev2.com:9999 location管的是后半部分,即:/login/ 一个nginx可以配置多个server. 每个server可以配置多个location. URL的前半部分控制选择哪一个server,后半部分控制选择哪一个location,最终决定往哪里去请求. server的配置 server

  • nginx简单配置多个server的方法

    1:安装nginx步骤就不说了 ,自行百度. 2:打开nginx的配置文件nginx.conf 这是项目1的配置,现在需要再开个同域名不同端口的项目,如下图: 注意:LZ一直出现访问不了,折腾了许久,是因为服务器www.pigaudio.com或120.77.223.7只开了默认的80端口,而8088端口并未开,所以只需要登陆你的服务账号添加一个8088即可,比如你的服务器是阿里云购买的,则需要登陆阿里云加一个8088,还有问题就是,如果你服务器打开了网络防火墙也是访问也是不行的,关了即可. 到

  • Nginx could not build the server_names_hash 错误的解决办法

    在给nginx 配置了一个超长的域名后,通过 /usr/local/nginx/sbin/ngnix -t 检查配置文件时出现一下错误: 复制代码 代码如下: could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32 解决办法是在nginx的配置文件的http段中增加如下配置: 复制代码 代码如下: server_names_hash_bucket_size 64; 如

  • Nginx出现500 Internal Server Error 错误的解决方案

    今日在使用 Nginx 的时候出现 500 错误,就搜索了一下错误代码,分享给大家. 500(服务器内部错误)    服务器遇到错误,无法完成请求. 501(尚未实施)   服务器不具备完成请求的功能.例如,当服务器无法识别请求方法时,服务器可能会返回此代码. 502(错误网关)   服务器作为网关或代理,从上游服务器收到了无效的响应. 503(服务不可用)  目前无法使用服务器(由于超载或进行停机维护).通常,这只是一种暂时的状态. 504(网关超时)   服务器作为网关或代理,未及时从上游服

  • 详解Nginx虚拟主机配置中server_name的具体写法

    server_name指令可以设置基于域名的虚拟主机,根据请求头部的内容,一个ip的服务器可以配置多个域名.下面这些server_name的参数是有效的: server_name jb51.net; server_name jb51.net www.jb51.net; server_name *.jb51.net; server_name .jb51.net; server_name nginx.*; server_name jb51.netg bucknell.net brackley.org

  • nginx多server日志分割脚本分享

    1,配置多个server日志只要在$website变量增加并用空格分开就行.2,循环创建日志目录3,分割后用xz 压缩,当然没安装可以用gzip bzip2等等.4,注意我配置nginx日志文件名为 "access_{{站点网站}}.log" "error_{{站点网站}}.log" 复制代码 代码如下: # !/usr/bin/bashlog_dir="/usr/local/nginx/logs"back_log_dir="/disk

  • Nginx隐藏server头信息的实现

    目录 分析 隐藏版本号 php-fpm服务器隐藏版本号 隐藏Server 分析 上一篇文章我们搭建了Nginx,请求响应头如下 [nginx@node01 sbin]$ curl -I 127.0.0.1:8090 HTTP/1.1 200 OK Server: nginx/1.9.9 Date: Fri, 11 Nov 2022 14:56:38 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Fri, 11 Nov

  • 通过Nginx定义Header头信息的实现步骤

    通过修改nginx的conf文件,轻松达到自定义HTTP Header的目的. Nginx 使用 ngx_headers_more 模块来增加.删除出站.入站的 Header 信息.默认该模块没有加入到 Nginx 的源码中,要想使用相关功能需要在编译 Nginx 时加入该模块.本人服务器中的 Nginx 在编译时没有加入该模块,使用 -V 查看当前 Nginx 的编译参数: [root@z-dig ~]# nginx -V nginx version: www.z-dig.com built

  • Nginx隐藏服务器端各类信息的方法

    有时我们不希望有人可以通过一些工具来返回我们服务器的信息,下面我来介绍在nginx中隐藏nginx响应头,修改nginx返回头信息,隐藏php版本号,隐藏服务器信息,同学可参考. 首先隐藏nginx版本信息,只需编辑 nginx.conf 文件 添加一行 server_tokens off; http { include /etc/nginx/mime.types; default_type application/octet-stream; index index.php index.html

  • Nginx 操作响应头信息的实现

    前置条件:需要编译 ngx_http_headers_module 模块,才支持 header 头信息操作 add_header 意思为将自定义的头信息的添加到响应头,指令为 add_header name value [always];,可以用在 http {}, server {}, location {}, if in location {} 上下文中, 只有当响应状态码等于 200, 201 (1.3.10), 204, 206, 301, 302, 303, 304, 307 (1.1

  • nginx 隐藏版本号与WEB服务器信息的解决方法

    nginx不仅可以隐藏版本信息,还支持自定义web服务器信息 先看看最终的隐藏结果吧 具体怎么实现呢,其实也很简单,请往下看 1 官网下载最新稳定版 wget http://nginx.org/download/nginx-1.14.1.tar.gz 2 解压 tar -xf nginx-1.14.1.tar.gzcd nginx-1.14.1 3 修改C文件 (1)vim src/http/ngx_http_header_filter_module.c #修改49行 static u_char

  • Nginx实现不同域名输出不同的服务器头信息方法

    大家或许会有这种奇葩的需求... 要是同一台主机上, 需要针对不同的域名输出不同的Server头, 怎么实现呢? 我们需要用到ngx_headers_more模块 复制代码 代码如下: location / {     if ( $host = 'segmentfault.com' ){         more_set_headers 'Server: Nginx';     }     if ( $host = '0x01.segmentfault.com' ){         more_

  • Nginx隐藏版本号的方法

    Nginx隐藏版本号 在生产环境中,需要隐藏Nginx的版本号,以避免安全漏洞的泄露 查看方法 使用fiddler工具在Windows客户端查看Nginx版本号 在centos系统中使用"curl -I 网址" 命令查看 Nginx隐藏版本号的方法 修改配置文件法 修改源码法 一,安装Nginx 1,在Linux上使用远程共享获取文件并挂载到mnt目录下 [root@localhost ~]# smbclient -L //192.168.100.3/ ##远程共享访问 Enter S

  • Nginx隐藏版本号与网页缓存时间的方法

    Nginx优化---隐藏版本号与网页缓存时间 配置Nginx隐藏版本号 在生产环境中,需要隐藏Nginx的版本号,以避免安全 漏洞的泄漏 查看方法 ●使用fiddler I具在Windows客户端查看Nginx版本号 在CentOS系统中使用"curl -I 网址"命令查看 Nginx隐藏版本号的方法 ●修改配置文件法 ●修改源码法 修改配置文件法 1.Nginx的配置文件中的server_ tokens 选项的值设置为off [root@www conf]# vim nginx.co

  • HTTP头信息总结

    本文为多篇"HTTP请求头相关文章"及<HTTP权威指南>一书的阅读后个人汇总整理版,以便于理解. 通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息.客户端向服务器发送一个请求,请求头包含请求的方法.URI.协议版本.以及包含请求修饰符.客户信息和内容的类似于MIME的消息结构.服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息.实体元信息以及可能的实体内容. Http协议定义了很多与服务器交互的方法,最基本的

  • 关于nginx日志增加cookie信息

    一.获取全部cookie信息 这个比较方便,直接在nginx.conf文件中添加$http_cookie log_format main '[$time_local] - $remote_addr:$remote_port - $remote_user - $upstream_addr $upstream_status $upstream_response_time - ' '"$request" $status $bytes_sent $request_time ' '"$

随机推荐