`
ljl_xyf
  • 浏览: 633129 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

修改nginx的http响应头server字段

 
阅读更多

 修改src/http/ngx_http_header_filter_module.c



找到下面两行:
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: Microsoft-IIS/7.5" CRLF;
static char ngx_http_server_full_string[] = "Server: Microsoft-IIS/7.5" CRLF;

 

 

一. 介绍ngx_headers_more

ngx_headers_more 用于添加、设置和清除输入和输出的头信息。nginx源码没有包含该模块,需要另行添加。

该模块是ngx_http_headers_module模块的增强版,提供了更多的实用工具,比如复位或清除内置头信息,如Content-Type, Content-Length, 和Server。

可以允许你使用-s选项指定HTTP状态码,使用-t选项指定内容类型,通过more_set_headers 和 more_clear_headers 指令来修改输出头信息。如:

输入头信息也可以这么修改,如:

-t选项也可以在more_set_input_headers和more_clear_input_headers指令中使用。

不像标准头模块,该模块的指示适用于所有的状态码,包括4xx和5xx的。 add_header只适用于200,201,204,206,301,302,303,304,或307。

标准头模块ngx_http_headers_module参见:《ngx_http_headers_module模块add_header和expires指令

二. 安装ngx_headers_more

ngx_headers_more 包下载地址:http://github.com/agentzh/headers-more-nginx-module/tags

ngx_openresty包含该模块。

三. 指令说明

more_set_headers

语法:more_set_headers [-t <content-type list>]... [-s <status-code list>]... <new-header>...

默认值:no

配置段:http, server, location, location if

阶段:输出报头过滤器

替换(如有)或增加(如果不是所有)指定的输出头时响应状态代码与-s选项相匹配和响应的内容类型的-t选项指定的类型相匹配的。

如果没有指定-s或-t,或有一个空表值,无需匹配。因此,对于下面的指定,任何状态码和任何内容类型都讲设置。

具有相同名称的响应头总是覆盖。如果要添加头,可以使用标准的add_header指令代替。

单个指令可以设置/添加多个输出头。如:

在单一指令中,选项可以多次出现,如:

等同于:

新的头是下面形式之一:

  1. Name: Value
  2. Name:
  3. Name

最后两个有效清除的头名称的值。Nginx的变量允许是头值,如:

注意:more_set_headers允许在location的if块中,但不允许在server的if块中。下面的配置就报语法错误:

more_clear_headers

语法:more_clear_headers [-t <content-type list>]... [-s <status-code list>]... <new-header>...

默认值:no

配置段:http, server, location, location if

阶段:输出报头过滤器

清除指定的输出头。

也可以使用通配符*,如:

清除开始由“X-Hidden-”任何输出头。

more_set_input_headers

语法:more_set_input_headers [-r] [-t <content-type list>]... <new-header>...

默认值:no

配置段:http, server, location, location if

阶段: rewrite tail

非常类似more_set_headers,不同的是它工作在输入头(或请求头),它仅支持-t选项。

注意:使用-t选项的是过滤请求头的Content-Type,而不是响应头的。

more_clear_input_headers

语法:more_clear_input_headers [-t <content-type list>]... <new-header>...

默认值:no

配置段:http, server, location, location if

阶段: rewrite tail

清除指定输入头。如:

四. ngx_headers_more局限性

1. 不同于标准头模块,该模块不会对下面头有效: Expires, Cache-Control, 和Last-Modified。

2. 使用此模块无法删除Connection的响应报头。唯一方法是更改src/ HTTP/ ngx_http_header_filter_module.c文件。

五. 使用ngx_headers_more

六. 应用ngx_headers_more

修改web服务器是什么软件,什么版本,同时隐藏Centent-Type、Accept-Range、Content-Length头信息。

add_header

add_header

404状态码添加header

配置如下:

add_header

 

 

分享到:
评论

相关推荐

    Nginx 操作响应头信息的实现

    Nginx还提供了一个`expires`指令,允许我们启用或禁用,添加或修改响应头中的`Expires`和`Cache-Control`字段,这是控制客户端缓存行为的重要手段。`expires`指令的基本语法如下: ``` expires [modified] time; ...

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

    其次,修改Nginx返回的响应头信息也是一种常见的隐藏服务器细节的方式。通过编辑nginx.conf文件中的log_format指令,可以自定义日志的格式。例如,可以自定义一个日志格式,其中记录客户端地址、请求方式、请求的...

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

    前者控制HTTP响应头中的"Server"字段,后者则涉及特定状态码(如404、500等)时的页面显示。 1. 在`ngx_http_header_filter_module.c`文件的第49行,将默认的服务器信息替换为你自定义的字符串,例如:"Server: ...

    nginx优化详细优化参数

    通过`curl -I &lt;server_ip&gt;`命令测试,确认响应头中的Server字段已显示为自定义的信息。 #### 三、Nginx性能优化 ##### 3.1 调整工作进程数 根据服务器CPU核心数量来设置`worker_processes`,通常设置为等于或小于...

    Nginx软件优化1

    这将更改HTTP响应头中的"Server"字段。 例如,将`NGINX_VERSION`改为`"1.0"`,并在`ngx_http_server_string`中使用自定义标识: ```c #define NGINX_VERSION "1.0" #define NGINX_VER "clsn/" NGINX_VERSION ... ...

    headers-more-nginx-module-0.33.zip

    headers_more_nginx_module,也称为headers_more模块,是由Evan Miller开发的一个第三方Nginx模块,其主要功能是提供对HTTP响应头的额外操作,包括添加、删除或修改HTTP头字段。这个模块在默认的Nginx配置中并不包含...

    nginx-accesskey

    # 设置 access key 的请求头字段名 location /download/ { root /var/www/download; index index.html; # 使用 accesskey 检查 accesskey_check on; } } } ``` 在这个配置中,`accesskey_key` 设置了 ...

    企业级Nginx Web服务优化实战.docx

    此配置会阻止Nginx在错误消息和"Server"响应头字段中显示其版本信息。这一改动后,重新加载Nginx配置文件,例如使用`/application/nginx/sbin/nginx -s reload`命令,就可以检查是否成功隐藏了版本信息。 除了隐藏...

    Nginx虚拟主机多server_name的顺序问题

    当一个请求到达Nginx时,它会检查请求的Host头字段,并尝试匹配`server_name`设置来确定应该将请求路由到哪个虚拟主机。在配置文件中,你可能会看到多个`server_name`值,这表示该虚拟主机可以响应多个不同的域名。 ...

    nginx后端健康检测模块

    例如,你可能希望检查服务器返回的特定报头字段,如`X-Server-Health`,如果该字段的值为“OK”,则认为服务器是健康的。这样可以确保服务器不仅返回正确的状态码,而且还能执行必要的业务逻辑。 ### 配置健康检查...

    nginx处理http请求实现过程解析

    Nginx处理HTTP请求的过程主要包括:解析请求头中的`Host`字段,匹配相应的`server_name`,决定使用哪个`server`块处理请求,以及通过`proxy_pass`实现反向代理和负载均衡。通过精细配置,Nginx能有效地管理多个域并...

    nginx_upstream_hash-0.3.2.tar.gz

    - 新增对特定头部字段进行哈希的选项,如 `$http_user_agent` 或 `$cookie_session_id`。 - 修复已知的bug和提高性能。 - 可能添加了新的配置指令,以提供更灵活的配置选项。 要了解 `0.3.2` 版本的详细变更,通常...

    nginx使用文档

    - 通过添加 CORS 相关头字段实现。 ```nginx location / { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-...

    nginx-1.12.2 window版

    ` 等响应头,Nginx 可以帮助处理跨域问题。 **五、Nginx 1.12.2 版本特点** Nginx 1.12.2 版本在性能上进行了优化,增强了稳定性,并修复了一些已知问题。对于反向代理功能,此版本可能包括了更高效的数据传输、更...

    nginx性能与调优

    配置文件`nginx.conf`是Nginx的核心,包含了全局块、events块、http块、server块和location块等。通过合理配置这些区块,可以实现Nginx的性能优化。 - **全局块**: 设置Nginx服务器的全局配置,如用户组、工作进程...

    Nginx讲解Nginx讲解

    2. **服务器头信息伪装**:Nginx允许修改HTTP响应头中的Server字段,从而隐藏服务器的真实身份,增强安全性。 3. **DDoS防护**:结合防火墙工具如iptables,Nginx可以有效地屏蔽那些频繁访问Web页面的IP地址,防止...

    升级nginx支持HTTP/2服务端推送的方法

    如果返回的`Server`字段显示`nginx/1.14.0`或更高版本,则表示成功升级。 ### 2. 修改Nginx配置 在Nginx配置文件中启用HTTP/2服务端推送,你需要找到处理特定类型的请求(例如PHP文件)的location块,并添加`...

    深入理解Nginx中Server和Location的匹配逻辑

    Nginx在决定请求由哪个server块执行时,主要关注的是server块中的listen和server_name两个字段 listen指令 listen字段定义server响应的ip和端口,如果没有明确配置listen字段,默认监听0.0.0.0:80(root)或者0.0.0.0:...

Global site tag (gtag.js) - Google Analytics