版权声明:本文为博主原创文章,未经博主容许不得转载。html
nginx.conf文件在安装目录/conf目录下node
一、定义Nginx运行的用户和用户组linux
user nginx nginx;
二、nginx进程数,建议设置为等于CPU总核心数nginx
worker_processes 1;
三、全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]正则表达式
#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;
四、进程文件windows
pid /var/run/nginx.pid;
五、工做模式与链接数上限:worker_connections是单个后台worker process进程的最大并发连接数,并发总数是 worker_processes 和 worker_connections 的乘积, 即 max_clients = worker_processes * worker_connections服务器
events { worker_connections 1024; }
六、http下的一些配置及其意义markdown
include mime.types; #文件扩展名与文件类型映射表 default_type application/octet-stream; #默认文件类型 sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来 输出文件,对于普通应用设为 on,若是用来进行下载等应用磁盘IO重负载应用,可设置 为off,以平衡磁盘与网络I/O处理速度,下降系统的负载。注意:若是图片显示不正常 把这个改为off。 autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。 tcp_nopush on; #防止网络阻塞 tcp_nodelay on; #防止网络阻塞 keepalive_timeout 120; #长链接超时时间,单位是秒 gzip on; #开启gzip压缩输出
七、server虚拟主机一些配置及其意义
例如:网络
http{
#虚拟主机1 server{ listen 80; server_name www.nginx1.com; location / { root html; index index.html index.htm; } } #虚拟主机2 server{ listen 80; server_name localhost; location / { root html; index index.html index.htm; } } }
这里server_name配置域名的时候,若是是本地测试,须要到windos下hosts文件里,把你的域名和ip添加进去(C:\Windows\System32\drivers\etc\hosts)并发
nginx支持三种类型的 虚拟主机配置
server{ listen 192.168.1.1:80; server_name localhost; } server{ listen 192.168.1.2:80; server_name localhost; }
#域名能够有多个,用空格隔开 server{ listen 80; server_name www.nginx1.com www.nginx2.com; } server{ listen 80; server_name www.nginx3.com; }
server{ listen 80; server_name localhost; } server{ listen 81; server_name localhost; }
server下的location映射解析(官方中文文档:ngx_http_core_module)匹配规则:location [ = | ~ | ~* | ^~ ] uri { ... }
location URI {}:
对当前路径及子路径下的全部对象都生效;
location = URI {}:
精确匹配指定的路径(注意URL最好为具体路径),不包括子路径,所以,只对当前资源生效;
location ~ URI {}:
location ~* URI {}:
模式匹配URI,此处的URI可以使用正则表达式,~区分字符大小写,~*不区 分字符大小写;
location ^~ URI {}:
再也不检查正则表达式
优先级:= > ^~ > ~|~* > /|/dir/
举例:
location = / { [ configuration A ] } location / { [ configuration B ] } location /documents/ { [ configuration C ] } location ^~ /images/ { [ configuration D ] } location ~* \.(gif|jpg|jpeg)$ { [ configuration E ] }
解答:请求“/”匹配配置A, 请求“/index.html”匹配配置B, 请求“/documents/document.html”匹配配置C, 请求“/images/1.gif”匹配配置D, 请求“/documents/1.jpg”匹配配置E
location配置规则
一、“ =”前缀的指令严格匹配这个查询。若是找到,中止搜索。
二、全部剩下的常规字符串,匹配最精确的(通常最长的那个)。若是这个匹配使用^〜前缀,搜索中止。
三、正则表达式,在配置文件中是从上往下匹配的
四、若是第3条规则产生匹配的话,结果被使用。不然,如同从第2条规则被使用
特殊状况:
两种状况下,不须要继续匹配正则 location :
( 1 ) 当普通 location 前面指定了“ ^~ ”,特别告诉 Nginx 本条普 通 location 一旦匹配上,则不须要继续正则匹配。
( 2 ) 当普通location 刚好严格匹配上 ,不是最大前缀匹配,则再也不继续匹配正则
另外nginx的反向代理、Tengine(Nginx的升级版)的健康检查 也用到了location知识,能够去看看