272
nginx常见的配置项
- yiqingpeng
- 2018-04-14
-
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;