nginx配置文件的简明说明,供大家学习参考。
虚拟主机
server_name .avdata.org; #可以用正则表达式
*.avdata.org 跟avdata.org 可以合并为 .avdata.org 多个域名并排,空格分隔。
显示目录或文件
autoindex on;
autoindex_exact_size on; #显示文件大小
autoindex_localtime on; #显示最后修改时间。
压缩返回
gzip on;
gzip_types text/plain application/x-javascript text/css application/xml; #指定类型文件压缩
gzip_min_length 1000;
gzip_buffers 4 8k;
默认读取的文件
index index.php index.html index.htm;
设置网站的根目录
root /var/nginx/avdata/public_html; #确保有目录权限x
默认请求处理
location / { #默认的处理
try_files $uri $uri/ index.php?$args;
}
默认处理的匹配方式
配置的$uri 即不包含参数以/开头的请求地址
~ 区分大小写正则匹配
~* 不区分大小写正则匹配
^~ 如果匹配之后将停止往下检查
= 完全相等
例:
location ~ \.php$ {#匹配.php的请求
try_files $uri $uri/ index.php?$args;#$args显示传递GET参数
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
location = index.php {#匹配index.php ,非页面上输入index.php的请求.页面上index.php的请求为/index.php
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;#$fastcgi_script_name默认跟$uri相同
fastcgi_index index.php;
}
静态文件超时
access_log off;#错误不记录日志
expires 30d;#客户端缓存30天
}
通过规则:
{}里面的设置不影响外部的设置,
root /var/nginx/avdata/public_html/hi;
}
外部的设置影响{}里的设置,所以可以在虚拟主机的外部定义root,全局共用
IP监听
listen 80; #IP:端口 或者直接端口,监听全部IP
简单重写代替
# 最后一个是处理方式或者是处理地址,之前的为文件或目录<br># 找不到对应文件或目录将用最后一个作为请求代替<br># $uri/ 以/结尾表示目录<br>try_files $uri $uri/ index.php;#文件或目录找不到的时候用index.php代替$uri
别名
alias /good/; #但$uri为/i/*规则的时候,$uri将被修改为/good/* 不能用于正则表达式内的location
}
禁止访问
deny all;
}
指定IP访问
allow 127.0.0.1;
}
传输速度限制
limit_rate 100k;
404错误记录
nginx中借助Tengin添加新模块的方法介绍,有需要的朋友可以参考下。
1.为nginx添加模块
进入到nginx的源码包中,重新configure加入相应模块
例如,我下载的一个ngx_http_push模块放到了/usr/local/ngx_modules目录里,该模块的源码目录为ngx_http_push,那么configure指令为
configure 没问题的话那么就直接执行
安装完成,此时模块为静态的模块。
2.使用Tengine的dso_install
Tengine的新特性中的动态加载,在安装后的Tengine的sbin目录里,有nginx和dso_install两个指令.
可以用./nginx -m 查看已经加载的相关模块,用./nginx -l查看相关模块列表,包含详细的配置指令。
用dso_install来安装模块要简单得多,直接执行
即可,会把编译好的so文件直接复制到Tengine的modules目录里,然后再nginx.conf里面加入
load ngx_http_push.so;
}
执行:./nginx -s reload 重新加载配置文件,生效。
客户端在测试服务器(nginx)上上传大的图片,报出错误消息:“413 Request Entity Too Large”。
解决方法:
打开nginx主配置文件nginx.conf,找到http{}段,添加:
client_max_body_size 20m;
以Centos下为例:
vi /usr/local/nginx/conf/nginx.conf
client_max_body_size 20m;
平常重启nginx:
kill -HUP `cat /usr/local/nginx/nginx.pid `
再上传就不报错了,恢复正常。