nginx 自定义 header
首先放上效果图:
默认情况下你能看到的 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 即可。