岭秦渭泾 發表於 2023-8-21 00:00:00

nginx向响应内容中追加内容(ngx_http_addition_module模块)

<p>ngx_http_addition_module在响应之前或者之后追加文本内容,比如想在站点底部追加一个js或者css,可以使用这个模块来实现,这个模块和淘宝开发的nginx footer模块有点类似,但是还是有不同. 这个模块需要依赖子请求,nginx footer依赖nginx写死的配置.</p>
<h3><strong>1. 安装nginx</strong></h3>
<p></p><pre class="brush:bash;toolbar:false"># wget http://nginx.org/download/nginx-1.4.2.tar.gz
# tar -xzvf nginx-1.4.2.tar.gz
# cd nginx-1.4.2
#  --prefix=/usr/local/nginx-1.4.2 --with-http_stub_status_module --with-http_addition_module
# make
# make install</pre><p>如果你已经安装了nginx,只想增加模块,请参考ttlsa以前的文章如何安装nginx第三方模块</p>
<h3>
<strong>2.</strong> 指令(Directives)</h3>
<p>语法:     add_before_body uri;<br>
默认值:     —<br>
配置段:     http, server, location<br>
发起一个子请求,请求给定的uri,并且将内容追加到主题响应的内容之前。</p>
<p>语法:     add_after_body uri;<br>
默认值:     —<br>
配置段:     http, server, location<br>
发起一个子请求,请求给定的uri,并且将内容追加到主题响应的内容之后。</p>
<p>syntax: addition_types mime-type ...;<br>
default: addition_types text/html;<br>
context: http, server, location<br>
这个指令在0.7.9开始支持,指定需要被追加内容的MIME类型,默认为“text/html”,如果制定为*,那么所有的</p>
<h3>
<strong>3.</strong> nginx配置addition</h3>
<p><span>3.1 配置nginx.conf</span></p><pre class="brush:bash;toolbar:false">server {
    listen       80;
    server_name  www.ttlsa.com;

    root /data/site/www.ttlsa.com;    

    location / {
        add_before_body /2013/10/header.html;
        add_after_body  /2013/10/footer.html;
    }
}</pre><p><span>3.2 测试</span><br>
以下三个文件,对应请求的主体文件和add_before_body、add_after_body对应的内容</p><pre class="brush:bash;toolbar:false"># cat /data/site/test.ttlsa.com/2013/10/20131001_add.html
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;I am title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
ngx_http_addition_module
&lt;/body&gt;
&lt;/html&gt;

# cat /data/site/test.ttlsa.com/2013/10/header.html
I am header!

# cat /data/site/test.ttlsa.com/2013/10/footer.html
footer - ttlsa</pre><p>访问结果如下,可以看到20131001_add.html的顶部和底部分别嵌入了子请求header.html和footer的内容。</p><pre class="brush:bash;toolbar:false"># curl test.ttlsa.com/2013/10/20131001_add.html           
I am header!
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;I am title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
ngx_http_addition_module
&lt;/body&gt;
&lt;/html&gt;
footer - ttlsa</pre><p></p>
<h3>4.<strong> 结束语</strong>
</h3>
<p>addition模块与上节上节nginx sub替换响应内容模块应用场景有点相同,具体怎么使用,大家结合实际情况来使用.欢迎大家继续访问运维生存时间.</p>
頁: [1]
查看完整版本: nginx向响应内容中追加内容(ngx_http_addition_module模块)