我继承了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,但是我们不代理任何其他http服务器(没有tomcat、apache等)。
据我理解,proxy_buffers指令适用于您正在代理的http服务,如apache、tomcat或第三方网站,并且不适用于使用的php。
相反,fastcgi_buffers是在代理动态语言引擎(或它们称为什么)时使用的,比如php、独角兽或乘客。
我对这些假设正确吗?如果是这样的话,因为我是而不是使用apache或tomcat的,那么我可以删除proxy_buffer*指令,因为它们没有被使用?
发布于 2014-04-19 14:47:06
你的假设大多是正确的。然而,在将nginx放在应用程序前面时,经常会使用proxy_指令,特别是如果您通过thin运行rails,或者任何类型的基于Jetty的Java应用程序。
但是您是对的,- in您的给定配置(fastcgi_pass),fastcgi_buffer是您要追求的。
请注意,fastcgi_buffering直到nginx >= 1.5.6才完全可移动。还请注意,fastcgi_buffering和proxy_buffering都可以通过X-Accel-Buffering: no报头在每次请求的基础上禁用。
https://stackoverflow.com/questions/21899281
复制相似问题