加载中...

Nginx 模块headers-more-nginx-module详解


前言

再用nginx做反向代理的时候,我们经常会有需求需要修改Nginx默认的Header.这时候我们就需要headers-more-nginx-module来实现一些额外的需求

修改普通请求的Header

nginx内置的模块就指出修改响应头,使用方法为add_header.这是因为nginx默认安装就附带了ngx_http_headers_module,用于设置response header

使用方法
add_header Cache-Control no-store;
add_header Content-Encoding gzip;

修改反向代理请求的Header

这里会使用到proxy_set_header来自内置模块ngx_http_proxy_module用来重定义发往代理服务器服务器的请求头

使用方法
    proxy_set_header host $http_host;
    proxy_set_header x-real-ip $remote_addr;
    proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;

headers-more-nginx-module 模块

headers-more-nginx-module 模块用于添加、修改或清除 请求/响应头,该模块不是nginx自带的,默认不包含该模块,需要另外安装。

下载和安装方法可以参考这个文章

Nginx 1.78编译安装

该模块主要有4个指令:

  • more_set_headers 用于添加、修改、清除响应头
  • more_clear_headers 用于清除响应头
  • more_set_input_headers 用于添加、修改、清除请求头
  • 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';

文章作者: huhuhahei
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 huhuhahei !
评论
  目录