我继承了一个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*
指令,因为它们没有被使用?
答案 0 :(得分:2)
您的假设大多是正确的。但是,在将nginx放在应用程序前面时,很多时候会使用proxy_
指令,特别是如果您通过rails
运行thin
,或者任何基于Jetty的运行Java应用程序。
但你是对的 - 在你给定的配置(fastcgi_pass
)中,fastcgi_buffer
就是你所追求的。
请注意,在nginx&gt; = 1.5.6之前,fastcgi_buffering
不能完全删除。另请注意,可以通过fastcgi_buffering
标头按请求禁用proxy_buffering
和X-Accel-Buffering: no
。