worker_processes 4; # 根据核数选择
worker_cpu_affinity 0001 0010 0100 1000; # 绑定nginx worker进程到不同的cpu
worker_rlimit_nofile 65535; # 每个worker进程打开最大打开文件数(受系统限制,不得超过ulimit -HSn限制值)
user nginx; # 更改nginx默认用户 默认nobody
events {
use epoll; # 使用epoll的I/O多路复用模型,高性能高并发设置
worker_connections 1024; # 每个worker单个进程允许客户端最大的连接数
}
http {
include mime.types; # nginx 支持的媒体类型
default_type application/octet-stream; # 默认的媒体类型
sendfile on; # 开启高速传输模式,同时打开了tcp_nopush和tcp_nodelay,防止网络及磁盘I/O阻塞
tcp_nopush on; # 减少网络报文段的数量
tcp_nodelay on; # 提高I/0性能,等待字节组成一个数据包才发送,对于发送字节较少的业务,等待时间较长
client_header_timeout 15; # 读取客户端请求头部数据的超时时间,防止客户端利用http协议攻击,经验参考值15
client_body_timeout 15; # 读取客户端请求主体的超时时间,为两次成功的读取操作之间的一个超时,默认为60
send_timeout 15; # 响应客户端的超时时间,为两个连接活动之间的时间,超过时间,客户端无活动,则关闭连接,默认60,可改为参考值25
keepalive_timeout 65; # 连接超时
server_names_hash_max_size 32; # 设置存放域名的最大的散列列表的大小,默认512
server_names_hash_bucket_size 64; # 设置存放域名的最大散列的列表的存储桶大小 32|64|128
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; #日志格式
server_tokens off; # 隐藏软件版本
#fastcgi参数
fastcgi_connect_timeout 240; # nginx与后端fastcgi服务器连接超时时间,默认60,通常不要超过75.
fastcgi_send_timeout 240; # nginx允许fastcgi服务器段返回数据的超时时间,在规定时间内后端必须传完所有数据,否则断开.默认60秒
fastcgi_read_timeout 240; # nginx从fastcgi服务器读取响应信息的超时时间,表示建立连接后,nginx等待后端服务器的响应时间
fastcgi_buffer_size 64k; # nginx fastcgi 的缓冲区大小,默认情况,这个参数大小由fastcgi_buffers指定的一个缓冲区的大小
fastcgi_buffers 4 64k; # 设定用来读取从fastcgi服务器端收到的响应信息的缓冲区大小和缓冲区的数量,默认 8 4k|8k
fastcgi_busy_buffers_size 128k; # 用于设置系统很忙时可以使用的fastcgi buffers大小,官方推荐fastcgi_buffers *2 ,默认 8k|16k
fastcgi_temp_file_write_size 128k; # fastcgi零时文件的大小,可设置128~256k
#fastcgi_temp_path /data/ngx_fcgi_tmp; # fastcgi零时文件的目录
fastcgi_cache_path /data/ngx_fcgi_cache levels=2:2 \
keys_zone=ngx_fcgi cache:512m inactive=1d max_size=40g;
# fastcgi缓存目录 2:2会生成256*256个子目录 keys_zone缓存空间名称 cache用多少内存 inactive默认失效时间 max_size表示最多用多少硬盘空间
gzip on; # 开启压缩
gzip_min_length 1k; # 允许压缩的页面最小字节数
gzip_buffers 4 16k; # 压缩缓冲区大小,表示申请4个16k的内存作为压缩结果流缓存
gzip_http_version 1.1; # 压缩版本,用于设置识别http协议版本
gzip_comp_level 9; # 压缩比 1-9
gzip_types text/css text/xml application/javascript; # 指定压缩类型
gzip_vary on; # 让前端的缓存服务器缓存经过gzip压缩页面
server {
listen 80 default_server;
server_name _;
return 501; # 使用ip访问网站的用户,收到501
}
server {
listen 80; # 提供服务的端口
server_name localhost; # 提供服务的域名主机名
location / {
root html; # 站点根目录
index index.php index.html index.htm; # 默认首页文件
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 501; # 限制http请求方式
}
if ($request_user_agent ~* LWP::Simple | BBBike | wget) {
return 403; #限制下载协议代理
}
}
location ~ ^/admin/.*\.(php|php5|sh|pl|py)$ # 安全设置,admin目录下的脚本文件拒绝访问
{
allow 192.168.1.1;
deny all;
}
location ~* \.(sql|doc|txt|pdf)$ {
if (-f $request_filename) {
root /data/www; # 安全设置,请求文件重定向到别的url
rewrite ^/(.*) http://www.error.html/$i break;
}
}
location ~* \.(txt|doc|pdf|sql)$ {
root /data/www;
deny all;
}
location /upload/ { return 404;}
localtion ~ .*\.(php|php5)?$
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
fastcgi_cache ngx_fastcgi_cache; # 开启fastcgi缓存并为其指定一个名称,开启缓存有效降低cpu负载
fastcgi_cache_valid 200 302 1h; # 将200 302缓存应答1小时
fastcgi_cache_valid 301 1d; # 将301应答缓存1天
fastcgi_cache_valid any 1m; # 其它应答缓存设置1分
fastcgi_cache_min_users 1; # 设置请求几次之后响应将被缓存,1表示一次
fastcgi_cache_use_stale error timeout invalid_header http_500; 定义哪些情况下使用过期缓存
fastcgi_cache_key http://$host$request_uri; # 定义fastcgi_cache的key,以请求的作为缓存的key,nginx会取这个key的md5作为缓存文件
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 365d;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}