首页 web服务器 正文
272

nginx常见的配置项

  • yiqingpeng
  • 2018-04-14
  • 0
  • nginx 
#全局配置
user  nobody; # 配置运行nginx的系统用户
worker_processes  1; #worker进程数,一般设置成cpu核心数成倍数

events {
    worker_connections  1024;  #单个进程的最大连接数,这个数值受操作系统最大的文件描述符数量限制
}

http {
   .....(略)

  include mime.types;

  keepalive_timeout 60;

  sendfile on; #启动高效的文件传输模式

   upstream backend{  #backend是自定义的名称
        ip_hash; #nginx主要有两种负载算法:一是RR模式,按时间轮换服务器;二是ip_hash按ip轮换服务器。一般来说RR会好一些,ip_hash分散度不高,但是它可以保持session不丢失。
        server 127.0.0.1  max_fails=1  fail_timeout=40s; #这2个参数一起配合,来控制nginx怎样认为upstream中的某个server是失效的当在fail_timeout的时间内,某个server连接失败了max_fails次,则nginx会认为该server不工作了。同时,在接下来的 fail_timeout时间内,nginx不再将请求分发给失效的server。
个人认为,nginx不应该把这2个时间用同一个参数fail_timeout来控制,要是能再增加一个fail_time,来控制接下来的多长时间内,不再使用down掉的server就更好了~
如果不设置这2个参数,fail_timeout默认为10s,max_fails默认为1。就是说,只要某个server失效一次,则在接下来的10s内,就不会分发请求到该server上

        server 127.0.0.2;
       server 127.0.0.3:81;
    } 

   server {
        listen      8081;
        server_name tryit.com www.tryit.com; #多域名绑定用空格分隔
        
        location / {
            proxy_pass   http://localhost/tryit.com/;  #将所有请求转发到另一个路径去,注意路径以目录结束必须以反斜杠结尾 
            proxy_set_header X-Request-Cache yes;  #设置转发Request 的 header
        }
        
        location ~* \.html$ {  #如果请求的是静态页面(~*表示不区分大小写), 则直接返回本机的静态资源,并设置Response缓存Head头
            root f:/website/tryit.com;
            add_header Cache-Control private;   #设置浏览器处理缓存的机制
        }
    }

   server {
        listen       8081;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

       location ~ \.php$ {
                proxy_pass   http://backend;  #php文件则使用IP轮询方式分发到后台不同的apache机上
               proxy_connect_timeout 1;
               proxy_read_timeout 1;
        }

}


另一个参考:504 Gateway Time-out问题

常见于使用nginx作为web server的服务器的网站

我遇到这个问题是在升级discuz论坛的时候遇到的

一般看来, 这种情况可能是由于nginx默认的fastcgi进程响应的缓冲区太小造成的, 这将导致fastcgi进程被挂起, 如果你的fastcgi服务对这个挂起处理的不好, 那么最后就极有可能导致504 Gateway Time-out
现在的网站, 尤其某些论坛有大量的回复和很多内容的, 一个页面甚至有几百K
默认的fastcgi进程响应的缓冲区是8K, 我们可以设置大点
在nginx.conf里, 加入:

fastcgi_buffers 8 128k

这表示设置fastcgi缓冲区为8×128k
当然如果您在进行某一项即时的操作, 可能需要nginx的超时参数调大点, 例如设置成60秒:

send_timeout 60;

    调整了这两个参数, 结果就是没有再显示那个超时, 可以说效果不错, 但是也可能是由于其他的原因, 目前关于nginx的资料不是很多, 很多事情都需要长期的经验累计才有结果
 
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 32 4k;
proxy_busy_buffers_size 64k;






正在加载评论...