nginx配置文件参考
nginx.conf
#主要是解释参数作用,未必完全正确,具体参数值需要根据实际情况进行调整
user nginx;#启动nginx的用户名
worker_processes 2;#CPU核心数
worker_cpu_affinity 01 10;#将进程和CPU核绑定,减少切换开支
#worker_rlimit_nofile 65535;#一个进程可以打开的最多文件描述符数,每个代表一个连接
error_log /var/log/nginx/error.log warn;#错误日志及级别
pid /var/run/nginx.pid;#保存nginx进程pid文件的地址
events {
use epoll;#使用epoll方法调度
worker_connections 1024;#每个进程最大并发连接数
}
http {
include /etc/nginx/mime.types;#包含的文件类型信息
default_type application/octet-stream;#二进制流
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';#日志格式
access_log /var/log/nginx/access.log main;#请求日志
server_names_hash_bucket_size 128;#服务名hash大小
client_header_buffer_size 32k;#客户端请求头的buffer大小
large_client_header_buffers 4 128k;#处理较大的请求头的buffer数量和大小
client_max_body_size 10m;#客户端请求体最大大小
client_body_buffer_size 128k;#缓冲区代理缓冲用户请求的最大字节数
client_body_timeout 60s;#客户端发送超时,如果超时未发送数据则返回408
send_timeout 60s;#如果向客户端发送数据,客户端这么长时间没收到任何信息,则中断连接
sendfile on;#使用sendfile函数进行I/O,日常开启,下载服务器关闭
#tcp_nopush on;#上传下载文件时可以开启,TCP会尽可能发大包而不是小包
tcp_nodelay on;#如果是长连接,可以提高小包传输效率
keepalive_timeout 65;#长连接超时时间
gzip on;#gzip压缩选项
gzip_min_length 1k;#gzip压缩的文件的最小大小
gzip_buffers 4 16k;#使用的buffer大小
gzip_comp_level 2;#压缩等级
gzip_types text/plain application/json image/jpeg image/gif image/png;#要压缩的文件类型
gzip_disable "MSIE [1-6].";#微软的IE浏览器请求不压缩
#负载均衡
proxy_connect_timeout 75;#代理连接超时
proxy_send_timeout 75;#代理发送超时
proxy_read_timeout 75;#代理接收超时
proxy_buffer_size 4k;#代理buffer大小
proxy_buffers 4 32k;#代理总buffer大小
proxy_busy_buffers_size 64k;#高流量时代理的buffer大小
proxy_temp_file_write_size 64k;#代理缓存写入大小
proxy_temp_path /usr/local/nginx/proxy_temp 1 2;#代理缓存地址
proxy_cache_path /data/nginx_cache/ssd1/ levels=1:2 keys_zone=my_zone_1:10m inactive=300s max_size=5g;#设置代理的cache路径及相关参数
proxy_cache_path /data/nginx_cache/ssd2/ levels=1:2 keys_zone=my_zone_2:10m inactive=300s max_size=5g;#设置代理的cache路径及相关参数
split_clients $request_uri $my_cache {#cache负载均衡到两个硬盘上的选项
50% “my_zone_1”;
50% “my_zone_2”;
}
proxy_cache_key $host$request_uri;#定义cache的key
#设定负载均衡后台服务器列表
resolver 114.114.114.114;#设定DNS服务器
upstream backend {
#ip_hash;均衡负载算法
server 192.168.0.1 weight=5;#也可以是域名,但是要有后端DNS服务器或者hosts文件中存在
server 192.168.0.2:8080 fail_timeout=5s;
server 192.0.2.3 max_fails=3 fail_timeout=30s ;#最大失败次数,失败后等待重试
server www.example.com;
server 192.168.0.5:8080 down;#暂不参与负载均衡
server 192.168.0.6:8080 backup;#预留后备服务器
}
include /etc/nginx/conf.d/*.conf;#子服务配置文件
}
/conf.d/default.conf
server {
listen 80;#监听80端口
server_name localhost;#服务名
#charset koi8-r;#字符集
#access_log /var/log/nginx/host.access.log main;#访问日志
location / { #/目录
root /usr/share/nginx/html;#/目录映射的根目录
index index.html index.htm;#首页
#allow 172.29.73.0/24; #可以允许某些IP(段)的访问
}
error_page 500 502 503 504 /50x.html;#50x错误代码和网页
location = /50x.html {
root /usr/share/nginx/html;#50x代码的网页所在的目录
expires 1d;#浏览器cache缓存1天
}
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;#代理转发,还可以用 proxy_pass http://backend;这样的方式做负载均衡,http可以修改为https等其他协议
# proxy_set_header Host $host;#代理转发参数,主机名
# proxy_set_header X-Real-IP $remote_addr;#代理转发参数,路径上的前一个IP
# proxy_set_header X-Real-Port $remote_port;#路径上的前一个端口号
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#路过的所有IP
# proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;#一台服务器报这些错后是否让其他服务器处理
# proxy_cache $my_cache;#使用上面定义的proxy_cache
# proxy_cache_bypass $arg_noCache;#定义不进行cache的请求
# proxy_cache_valid 200 206 14d;#对指定状态进行缓存
# proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;#出现这些错误时发送旧版文件,而不是错误信息,可以减少回源次数
# proxy_cache_lock on;#缓存并发锁,未命中时只有一个回源请求
# proxy_cache_lock_timeout 1s;#缓存超时等待时间
#}
#location ~ \.php$ {
# root html;#cgi根目录地址
# fastcgi_pass 127.0.0.1:9000;#cgi服务器转发地址和端口
# fastcgi_index index.php;#cgi首页
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;#cgi文件
# include fastcgi_params;#可以设定fastcgi传递的相应参数
# fastcgi_connect_timeout 300; #与后端连接超时时间
# fastcgi_send_timeout 300; #发送超时
# fastcgi_read_timeout 300; #接收超时
# fastcgi_buffer_size 64k; #cgi应答头的缓冲区大小
# fastcgi_buffers 4 64k; #接受cgi应答的缓冲区大小
# fastcgi_busy_buffers_size 128k; #fastcgi_buffers的两倍
# fastcgi_temp_file_write_size 128k; #写入缓存文件的数据块大小,默认fastcgi_buffers的两倍
# fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m; #缓存地址,hash级别,名称和有效时间
# fastcgi_cache TEST; #fastcgi缓存名,使用cache可以大大减少后端压力
# fastcgi_cache_valid 200 302 1h; #应答码和相应的缓存时间
# fastcgi_cache_valid 301 1d;
# fastcgi_cache_valid any 1m;
#}
#location ~ /\.ht {
# deny all;#禁止所有IP访问
#}
}