nginx 自定义 header

首先放上效果图:

无标题.png

默认情况下你能看到的 http response 应该是这样的:

HTTP/1.1 200 OK
Server: nginx/1.6.0
Date: Tue, 28 Apr 2015 14:46:43 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.3.28
Vary: Accept-Encoding, Cookie
Cache-Control: max-age=3, must-revalidate

ngx_header_more 这个模块用于添加、设置和清除输入和输出的头信息。nginx 源码没有包含该模块,需要另行添加。
该模块是 ngx_http_headers_module 模块的增强版,提供了更多的实用工具,比如复位或清除内置头信息,如 Content-Type, Content-Length, 和 Server。

从 Github 上下载源码包后解压,并进入 nginx 源码目录,比如:

cd /root/lnmp/src/nginx-1.8.0

使用 nginx -V 查看当前 nginx 的编译参数,比如我的是:

configure arguments: --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_spdy_module --with-http_ssl_module --with-ipv6 --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module

然后把需要编译的模块加入:

make clean
./configure --prefix=/usr/local/nginx --user=www --group=www --add-module=../headers-more-nginx-module-0.261 \
--with-http_stub_status_module --with-http_spdy_module --with-http_ssl_module --with-ipv6 --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module
# 以上的../headers-more-nginx-module-0.261就是刚才解压的ngx_headers_more的源码包。
make
mv /usr/local/nginx/sbin/nginx{,$(date +%m%d)}
cp objs/nginx /usr/local/nginx/sbin
service nginx restart
mkdir -p /var/nginx/cache/one
chown -R www.www /var/nginx

完成后,在 nginx.conf 中的 http 块加入:

##For Custom Header##
  map $host $server_x_tag{
    'kotori.love' 'Kotori';
    default 'nginx';
  }

在虚拟主机配置文件 server 块中加入:

more_set_headers 'Server: $server_x_tag';

最后重新载入 nginx 即可。