proxy_buffer和fastcgi_buffer有什么区别?

时间:2014-02-20 05:49:08

标签: configuration nginx

我继承了一个nginx配置,我试图通过删除多余的或不做任何事情的规则/指令来优化它的安全性,速度和/或可维护性。

考虑到这一点,在我的server {...}指令中,我有:

fastcgi_buffer_size 16k;
fastcgi_buffers 256 32k;

并嵌套在其中,我有locations {...}的个别规则,其中包含以下内容:

location ~ /(my|path)/ {
    proxy_buffer_size 4k;
    proxy_buffers     256 4k;
    ...
}

location ~ \.php$ {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/dev/shm/php-fastcgi.socket;
    fastcgi_index index.php;
    ...
}

nginx 后面,我们使用上面描述的套接字 php-fpm ,但我们不代理任何其他http服务器(没有tomcat,apache等)。< / p>

根据我的理解,proxy_buffers指令适用于您代理apache,tomcat或第三方网站等http服务时 适用于 php-fpm fastcgi

相反,当 代理动态语言引擎(或其他任何名称)时,使用fastcgi_buffers,例如 php-fpm ,< em>独角兽或乘客

我在这些假设中是否正确?如果是这种情况,因为我使用apache或tomcat之类的东西,那么我可以删除proxy_buffer*指令,因为它们没有被使用?

1 个答案:

答案 0 :(得分:2)

您的假设大多是正确的。但是,在将nginx放在应用程序前面时,很多时候会使用proxy_指令,特别是如果您通过rails运行thin,或者任何基于Jetty的运行Java应用程序。

但你是对的 - 在你给定的配置(fastcgi_pass)中,fastcgi_buffer就是你所追求的。

请注意,在nginx&gt; = 1.5.6之前,fastcgi_buffering不能完全删除。另请注意,可以通过fastcgi_buffering标头按请求禁用proxy_bufferingX-Accel-Buffering: no