定位 发表于 2019-9-27 17:46:06

通过Nginx自定义响应Header头信息

通过修改nginx的conf文件,轻松达到自定义HTTP Header的目的。

Nginx 使用 ngx_headers_more 模块来增加、删除出站、入站的 Header 信息。默认该模块没有加入到 Nginx 的源码中,要想使用相关功能需要在编译 Nginx 时加入该模块。本人服务器中的 Nginx 在编译时没有加入该模块,使用 -V 查看当前 Nginx 的编译参数:

# nginx -V

nginx version: www.z-dig.com

built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)

built with OpenSSL 1.0.1e-fips 11 Feb 2013

TLS SNI support enabled

configure arguments: --prefix=/usr/local/nginx --user=www --group=www \

--with-http_ssl_module --with-http_stub_status_module

#




从官网下载模块:
# cd /usr/local/src/

# wget 、https://codeload.github.com/openresty/headers-more-nginx-module/zip/master -O ./headers-more-nginx-module-master.zip

# unzip headers-more-nginx-module-master.zip

重新编译 Nginx 前,请求 www.z-dig.com 的 Header 信息:
# curl -I www.z-dig.com

HTTP/1.1 200 OK

Server: www.z-dig.com

Date: Sat, 23 Apr 2016 11:25:15 GMT

Content-Type: text/html; charset=UTF-8

Connection: keep-alive

X-Powered-By: PHP/5.6.17

Vary: Accept-Encoding, Cookie

Cache-Control: max-age=3, must-revalidate

WP-Super-Cache: Served supercache file from PHP


#


现在重新编译 Nginx ,平滑更新:
# cd /usr/local/src/nginx

# make clean

rm -rf Makefile objs

#./configure --prefix=/usr/local/nginx --user=www --group=www \

--with-http_ssl_module --with-http_stub_status_module \

--add-module=/usr/local/src/headers-more-nginx-module-master

# make

# make install

# kill -s USR2 `cat /usr/local/nginx/logs/nginx.pid`

# ps -ef|grep nginx

root      2017     1  0 Apr21 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx

www       2018  2017  0 Apr21 ?        00:00:30 nginx: worker process     

root     21717  2017  0 19:41 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx

www      21718 21717  0 19:41 ?        00:00:00 nginx: worker process     

root     21856 18312  0 19:45 pts/2    00:00:00 grep nginx

# kill -s WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin`

# ps -ef|grep nginx

root      2017     1  0 Apr21 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx

root     21717  2017  0 19:41 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx

www      21718 21717  0 19:41 ?        00:00:00 nginx: worker process     

root     21943 18312  0 19:49 pts/2    00:00:00 grep nginx

# kill -s QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

# ps -ef|grep nginx

root     21717     1  0 19:41 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx

www      21718 21717  0 19:41 ?        00:00:00 nginx: worker process     

root     22050 18312  0 19:54 pts/2    00:00:00 grep nginx

#


到此 Nginx 已重新编译并平滑升级成功。

在 Nginx 的配置文件中加入代码,将之前请求网站返回 Header 中的 X-Powered-By 和 WP-Super-Cache 删除,以及修改Server的值也是可以的:
more_clear_headers 'X-Powered-By';

more_clear_headers 'WP-Super-Cache';

more_set_headers 'test';



# nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

# nginx -s reload


再次请求查看效果:
# curl -I www.z-dig.com

HTTP/1.1 200 OK

Server: test

Date: Sat, 23 Apr 2016 12:03:04 GMT

Content-Type: text/html; charset=UTF-8

Connection: keep-alive

Vary: Accept-Encoding, Cookie

Cache-Control: max-age=3, must-revalidate



#


页: [1]
查看完整版本: 通过Nginx自定义响应Header头信息