【介绍】
headers-more-nginx-module 模块用于添加、修改或清除 请求/响应头,该模块不是nginx自带的,默认不包含该模块,需要另外安装。
下载:https://github.com/openresty/headers-more-nginx-module
文档:https://docs.nginx.com/nginx/admin-guide/dynamic-modules/headers-more/
参考:https://serverfault.com/questions/214242/can-i-hide-all-server-os-info
参考:https://stackoverflow.com/questions/24594971/how-to-changehide-the-nginx-server-signature
参考:https://www.cnblogs.com/52fhy/p/10166352.html
参考:https://www.cnblogs.com/52fhy/p/10166333.html
参考:https://www.getpagespeed.com/server-setup/nginx/how-to-remove-the-server-header-in-nginx
参考:https://www.cnblogs.com/linkenpark/p/7283177.html
【安装】
下载源码到 nginx 源代码目录:
cd /root/nginx-1.17.4 && git clone --depth 1 https://github.com/openresty/headers-more-nginx-module.git
nginx编译时可以通过 –add-module 添加 modsecurity 模块:
cd /root/nginx-1.17.4 && ./configure --add-dynamic-module=./headers-more-nginx-module && make modules && cp objs/ngx_http_headers_more_filter_module.so /usr/local/nginx/modules/
在 nginx 配置模块加载,编辑 /usr/local/nginx/conf/nginx.conf ,在 main 标签中添加:
load_module modules/ngx_http_headers_more_filter_module.so;
在 Server 标签段内加上:
more_set_headers 'Server: xOS';
重启 nginx ,再看 Response Headers 里面 Server 信息,成功显示:server: xOS
实证成功!
【配置】
该模块主要有4个指令:
1. more_set_headers 用于添加、修改、清除响应头
2. more_clear_headers 用于清除响应头
3. more_set_input_headers 用于添加、修改、清除请求头
4. more_clear_input_headers 用于清除请求头
# set the Server output header more_set_headers 'Server: my-server'; # set and clear output headers location /bar { more_set_headers 'X-MyHeader: blah' 'X-MyHeader2: foo'; more_set_headers -t 'text/plain text/css' 'Content-Type: text/foo'; more_set_headers -s '400 404 500 503' -s 413 'Foo: Bar'; more_clear_headers 'Content-Type'; # your proxy_pass/memcached_pass/or any other config goes here... } # set output headers location /type { more_set_headers 'Content-Type: text/plain'; # ... } # set input headers location /foo { set $my_host 'my dog'; more_set_input_headers 'Host: $my_host'; more_set_input_headers -t 'text/plain' 'X-Foo: bah'; # now $host and $http_host have their new values... # ... } # replace input header X-Foo *only* if it already exists more_set_input_headers -r 'X-Foo: howdy';